Re: BUG #14405: ORDER BY TABLENAME, possible bug - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #14405: ORDER BY TABLENAME, possible bug
Date
Msg-id 27822.1477755279@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #14405: ORDER BY TABLENAME, possible bug  (Francisco Olarte <folarte@peoplecall.com>)
List pgsql-bugs
Francisco Olarte <folarte@peoplecall.com> writes:
> Then, I do not remember whether that's a bug or a feature, and have
> not been able to see it in the docs, do not even know how to do it (
> tried some places without luck ), so someone more knowledgeable can
> point us in the right direction.

Yeah: really, "tablename" is a whole-row variable, and "tablename.colname"
is an application of a field-selection operation to a composite value,
but you're not required to perform such a selection after mentioning
a whole-row variable, if it's in a context where the system can do
something sensible with a composite value.  Another way to say it is
that "tablename" and "tablename.*" are interchangeable notations for
a composite value representing the table's current row, everywhere except
at the top level of a SELECT list, where the standard mandates that "*"
references be burst into individual column references.

I had thought this was documented someplace, but after trawling our SGML
docs the closest thing I can find is the discussion in
https://www.postgresql.org/docs/current/static/sql-expressions.html#FIELD-=
SELECTION
and that's not terribly explicit.  There's also some related material in
https://www.postgresql.org/docs/current/static/rowtypes.html
but that doesn't seem to state this straight out either.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Francisco Olarte
Date:
Subject: Re: BUG #14405: ORDER BY TABLENAME, possible bug
Next
From: Will Pearson
Date:
Subject: Re: BUG #14403: Large numbers of CREATE OR UPDATE function causes memory exhaustion