"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Wednesday, November 8, 2017, john snow <ofbizfanster@gmail.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
--
Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice