2011/1/5 Florian Pflug <f...@phlo.org>:
> On Jan5, 2011, at 10:25 , Peter Eisentraut wrote:
>> On sön, 2011-01-02 at 12:47 +0100, Florian Pflug wrote:
>>> The only way around that would be to introduce magic constants "lower", 
>>> "upper" that
>>> can be used within index expressions and evaluate to the indexed 
>>> dimension's lower
>>> and upper bound. You'd then use
>>>
>>>  my_array[upper], my_array[upper-1], ...
>>>
>>> to refer to the last, second-to-last, ... element in the array. Actually 
>>> doing this
>>> could get pretty messy, though - not sure if it's really worth the effort...
>>
>> How about just some functions:
>>
>> array_first(array, dim)
>> array_last(array, dim)
>
>
> You image these to return the actual element, not the first and last index 
> value, right?
> Because we already have array_lower() and array_upper() which return the 
> lower and upper
> index bound for a certain dimension.
> (http://www.postgresql.org/docs/9.0/interactive/functions-array.htm)
>
> A more general solution would be a function
>
> array_relative(array anyarray, indices int[])
>

I don't think so this design helps. instead maintaining a data array,
you should to maintain a indices array.

Pavel

> which would return the element indexed by <indices>, where positive indices 
> are assumed to
> be relative to the respective dimension's lower bound and negative indices to 
> the
> upper bound + 1.
>
> For slices, we could additionally have
>
> array_relative(array anyarray, indices_start int[], indices_end int[])
>
> best regards,
> Florian Pflug
>
>
>
>
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to