Re: Convert Arbitrary Table to Array?

From: Harald Fuchs <hari(dot)fuchs(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Convert Arbitrary Table to Array?
Date: 2009-02-09 21:14:24
Message-ID: puy6wfjosv.fsf@srv.protecting.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

In article <17050(dot)1234200030(at)sss(dot)pgh(dot)pa(dot)us>,
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:

> Lee Hughes <lee(at)hughesys(dot)com> writes:
>> Hi, I need a function that accepts a table name and returns a 2-dimensional
>> array of the table data.

> Well, in 8.3 and up there are arrays of composite types, so you can
> do something like

> select array(select mytable from mytable);

Interesting. On 8.3.5 I tried

CREATE TABLE mytable (
id serial NOT NULL,
mytable int NOT NULL,
PRIMARY KEY (id)
);

INSERT INTO mytable VALUES
(1, 10),
(2, 20),
(3, 30),
(4, 40),
(5, 50),
(6, 60);

SELECT array(SELECT mytable FROM mytable);

and it returned

{10,20,30,40,50,60}

Only when I renamed the second column from "mytable" to "mytablex" I got

{"(1,10)","(2,20)","(3,30)","(4,40)","(5,50)","(6,60)"}

as you promised. Is there any syntax for treating the first "mytable"
as a composite type name instead of a column name?

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message SHARMILA JOTHIRAJAH 2009-02-09 21:23:10 ora2pg or dbi_link ?
Previous Message Stephen Frost 2009-02-09 21:05:33 Re: Out of memory on SELECT in 8.3.5