Re: array faults? - Mailing list pgsql-general

From Tom Lane
Subject Re: array faults?
Date
Msg-id 23933.1073661949@sss.pgh.pa.us
Whole thread Raw
In response to array faults?  (David Helgason <david@uti.is>)
List pgsql-general
David Helgason <david@uti.is> writes:
> EXAMPLE 1:
> maint=# select ('{{1,2,3},{4,5,6}}'::int[])[1][1:3];
>     int4
> -----------
>   {{1,2,3}}
> (1 row)

> Shouldn't this have been just {1,2,3} ?

Nope.  It's equivalent to (...)[1:1][1:3].  See section 8.10.3 "Accessing
Arrays" in the current documentation.  Note in particular where it says

 An array subscripting operation is always taken to represent an array
 slice if any of the subscripts are written in the form lower:upper. A
 lower bound of 1 is assumed for any subscript where only one value is
 specified, ...

> Shouldn't this have been just {4,5,6} (or maybe {{4,5,6}} accepting the
> result of example 1) ?

See above.  You need to write [2:2] not [2].

            regards, tom lane

pgsql-general by date:

Previous
From: Oleg Lebedev
Date:
Subject: deferring/disabling unique index
Next
From: Bruce Momjian
Date:
Subject: Re: deferring/disabling unique index