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
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? |