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