From: | "John Lister" <john(dot)lister-ps(at)kickstone(dot)com> |
---|---|
To: | "Greg Stark" <stark(at)enterprisedb(dot)com> |
Cc: | "Andrew Chernow" <ac(at)esilo(dot)com>, <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Array types |
Date: | 2009-04-08 15:45:24 |
Message-ID: | D529CFBDEAEA418D80166DA8092B6D37@squarepi.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On Wed, Apr 8, 2009 at 4:11 PM, John Lister
> <john(dot)lister-ps(at)kickstone(dot)com> wrote:
>> Cheers for the pointers. Am i right in thinking that if i get an array of
>> arrays, the nested arrays are sent in wire format as well - it seems to
>> be
>> from the docs.
>
> No, you can't easily get an array of arrays in Postgres. You can get
> multi-dimensional arrays but that's one big array with multiple
> dimensions. The text output form does look like an array of arrays
> but they don't behave like you might think they would:
Cheers, it wasn't clear if you have an array of arrays of which the nested
ones were of a different type. but it looks like all the values have to be
the same type,
eg
select (array[array[1,2,3,4],array['test']])
fails..
this makes life simpler :)
>> Secondly, comments are a bit scarse in the code, but am i also right in
>> thinking that an array indexing can start at an arbitrary value? This
>> seems
>> to be what the lbound value is for... or is this a addition to deal with
>> nulls eg, {null, null, null, 4} would have a lbound of 3.... (or both)
>
> No, nulls are handled using a bitmap inside the array data structure.
>
> Array bounds don't have to start at 1, they can start below 1 or above 1.
>
> postgres=# select ('[-2:-1][5:8]={{1,2,3,4},{5,6,7,8}}'::int[])[-2][5];
> int4
> ------
Somehow missed the bounds in the docs. Cheers that has cleared that up...
JOHN
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2009-04-08 15:46:07 | Re: Array types |
Previous Message | Alvaro Herrera | 2009-04-08 15:45:19 | Re: psql \d commands and information_schema |