Re: Support for negative index values in array fetching

From: Florian Pflug <fgp(at)phlo(dot)org>
To: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, "Valtonen, Hannu" <hannu(dot)valtonen(at)hut(dot)fi>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Support for negative index values in array fetching
Date: 2011-01-05 16:19:02
Message-ID: 1EE520A0-7EBE-44F9-8614-BF28E34BF68C@phlo.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Jan5, 2011, at 15:17 , Pavel Stehule wrote:
> 2011/1/5 Florian Pflug <fgp(at)phlo(dot)org>:
>> How so? You'd still be able to get the last element by simply writing
>>
>> array_relative(some_array, array[-1]).
>>
>> Or, if we made the function variadic, by writing
>>
>> array_relative(some_array, -1).
>
> Sorry, but It isn't too intuitive. Minimally for me. Why you don't
> thinking about simple functions with only positive arguments. There
> are only four combinations. I don't think we must have only one super
> function.
>
> we need functionality for:
>
> a) get first n items
> b) get items without last n items
> c) get last n items
> d) skip first n items

Now you've moved the goalpost - the OP wanted to access individual
elements, not slices! To support slices, a three-argument version
of array_relative() would be required, with the signature

array_relative(some_array anyarray, first int[], last int[])

Your requirements (a) to (d) are then easily satisfied

a) array_relative(ary, array[0], array[n-1])
b) array_relative(ary, array[0], array[-n-1])
c) array_relative(ary, array[-n], array[-1])
d) array_relative(ary, array[n], array[-1])

The individual function approach might be a tad more readable for
one-dimensional arrays, but they don't scale well to the general
case.

Maybe the OP could comment on whether any of these solutions
would fit his needs?

best regards,
Florian Pflug

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2011-01-05 16:37:17 pg_upgrade cleanup for map struct creation
Previous Message Bruce Momjian 2011-01-05 16:08:29 Re: pg_upgrade patches applied