Re: what does t(x) in select x from generate_series(1, 10) as t(x) stand for?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: john snow <ofbizfanster(at)gmail(dot)com>, "pgsql-novice(at)postgresql(dot)org" <pgsql-novice(at)postgresql(dot)org>
Subject: Re: what does t(x) in select x from generate_series(1, 10) as t(x) stand for?
Date: 2017-11-09 03:56:19
Message-ID: 13172.1510199779@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

"David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> writes:
> On Wednesday, November 8, 2017, john snow <ofbizfanster(at)gmail(dot)com> wrote:
>> is
>> select x from generate_series(1, 10) as t(x);
>> different from
>> select x from generate_series(1, 10) as x;

> Not sure about the pgAdmin part but t(x) means that you are aliasing the
> table result of the generate_series call to the name "t" and that
> tables' first (and in this case only) column is aliased to the name "x".

Right.

> The x in the select is then that first column. In the "as x" variant all
> you've done is alias the table to the name "x" and the "x" in the select
> refers to the table. Not able to confirm right now but the first result
> should yield a column of type bigint while the second should a composite
> whose only column is a bigint and whose name is "generate_series".

Not sure offhand what happens for a function-returning-composite, but
I'm pretty sure that if the function returns a scalar type, then

SELECT ... from f(...) as x;

is treated the same as

SELECT ... from f(...) as x(x);

Experimentally, these all produce identical results:

select x from generate_series(1, 10) as x;
select x.x from generate_series(1, 10) as x;
select x.* from generate_series(1, 10) as x;

which seems to confirm that.

regards, tom lane

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message john snow 2017-11-12 19:19:20 varchar vs varchar(n)
Previous Message David G. Johnston 2017-11-09 02:55:16 Re: what does t(x) in select x from generate_series(1, 10) as t(x) stand for?