Re: Array types

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

In response to

Browse pgsql-hackers by date

  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