Обсуждение: Undocumented trick in SELECT?

Поиск
Список
Период
Сортировка

Undocumented trick in SELECT?

От
Виктор Вислобоков
Дата:
I'm sorry, but I have not found such construction into documentation:

SELECT tablename FROM tablename;

say:

[WITH with_queries] SELECT select_list FROM table_expression [sort_specification]

say:
"The select list determines which columns of the intermediate table are actually output."

But, table name is not a column.

Reproduce:

tmp=# create table tmp(id SERIAL, name VARCHAR(10));
NOTICE:  CREATE TABLE will create implicit sequence "tmp_id_seq" for serial column "tmp.id"
CREATE TABLE
tmp=# insert into tmp (name) values('John');
INSERT 0 1
tmp=# insert into tmp (name) values('Pol');
INSERT 0 1
tmp=# insert into tmp (name) values('Martin');
INSERT 0 1
tmp=# select tmp from tmp;
    tmp     
------------
 (1,John)
 (2,Pol)
 (3,Martin)
(3 rows)

What is this? Is  this undocumented or am I bad looked in the documentation?

With best wishes,
Victor Vislobokov
St.Peterburg. Russia

Re: Undocumented trick in SELECT?

От
Tom Lane
Дата:
=?KOI8-R?B?98nL1M/SIPfJ08zPws/Lz9c=?= <corochoone@gmail.com> writes:
> I'm sorry, but I have not found such construction into documentation:
> SELECT tablename FROM tablename;

It's a whole-row variable.  These aren't terribly well documented but you
can find descriptions of them in places.  It's not standard SQL --- I
think we inherited it from PostQUEL and kept it because functions on
composite types don't work very well without composite variables.

            regards, tom lane