Re: Table returning functions - Mailing list pgsql-sql

From Jann Röder
Subject Re: Table returning functions
Date
Msg-id i764t8$clq$1@dough.gmane.org
Whole thread Raw
In response to Table returning functions  (Jann Röder <roederja@ethz.ch>)
Responses Re: Table returning functions  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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
> 
> 




pgsql-sql by date:

Previous
From: Michele Petrazzo - Unipex
Date:
Subject: Re: all the table values equal
Next
From: Tom Lane
Date:
Subject: Re: Table returning functions