Re: Table returning functions

From: Jann Röder <roederja(at)ethz(dot)ch>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Table returning functions
Date: 2010-09-19 23:04:07
Message-ID: i764t8$clq$1@dough.gmane.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Ok I now know that it really seems to do what I expected. But I still
wonder what it does if I use two functions f() and g() that return a
different number of rows.

I'm guessing a query such as

SELECT id, (f(id)).a, (g(id)).b when f returns 3 rows and g returns two
row would yield something like this:

id | a1 | b1
id | a2 | b2
id | a3 | <NULL>

I haven't tried this, so it could be something completely different. In
any case I think this should be documented.

Jann

Am 08.09.10 15:35, schrieb Jann Röder:
> Hi,
> I have a question which does not seem to be covered in the
> documentation: I have a function f(i) that returns a table with three
> columns (a, b, c).
>
> In the documentation
> (http://www.postgresql.org/docs/8.4/interactive/xfunc-sql.html#XFUNC-SQL-FUNCTIONS-RETURNING-SET)
> it says that (even though deprecated) you can call such functions in a
> SELECT clause like so:
>
> SELECT id, f(id) FROM some_table .
>
> This will give me a two column table that looks like this:
>
> id | (a, b, c)
>
> However since I want a 4 column table like this
> id | a | b | c
>
> , I do this instead:
>
> SELECT id, (f(id)).a, (f(id)).b, (f(id)).c FROM some_table.
>
> However I'm not quite sure if this really gives me what I want (i.e. the
> same as in the first query only with the tuple elements as separate
> columns).
>
> Of course I'm open to suggestions on how to do this more elegantly and
> also how one can do something like this without using the deprecated
> feature of calling a set returning function in SELECT.
>
> Jann
>
>

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2010-09-19 23:58:58 Re: Table returning functions
Previous Message Michele Petrazzo - Unipex 2010-09-17 15:45:13 Re: all the table values equal