On Fri, Nov 17, 2023 at 03:44:04PM -0700, David G. Johnston wrote: > I don't like this particular solution to the stated complaint. When a FROM > entry has an alias it must be referenced via that alias anywhere it is > referenced in the query - and indeed it is an error to not write the alias in > your example. It is not an improvement to write [ table_name | alias ] in our > syntax to try and demonstrate this requirement. If we do want to not say > "table_name" I suggest we say instead "from_reference" and then just define > what that means (i.e., an unaliased table name or an alias in the sibling FROM > clause attached to this level of the query). I like this better anyway on the > grounds that the thing being referenced can be a subquery or a view as well as > a table.
Okay, how is the attached patch? -- Bruce Momjian <br...@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 227ba1993b..c98ee8f7ee 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -45,7 +45,7 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="parameter">expression</replac [ LIMIT { <replaceable class="parameter">count</replaceable> | ALL } ] [ OFFSET <replaceable class="parameter">start</replaceable> [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ <replaceable class="parameter">count</replaceable> ] { ROW | ROWS } { ONLY | WITH TIES } ] - [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF <replaceable class="parameter">table_name</replaceable> [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ] + [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF <replaceable class="parameter">from_reference</replaceable> [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ] <phrase>where <replaceable class="parameter">from_item</replaceable> can be one of:</phrase> @@ -202,7 +202,11 @@ TABLE [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] is specified, the <command>SELECT</command> statement locks the selected rows against concurrent updates. (See <xref linkend="sql-for-update-share"/> - below.) + below.) <replaceable + class="parameter">from_reference</replaceable> must be a table + <replaceable class="parameter">alias</replaceable> or non-hidden + <replaceable class="parameter">table_name</replaceable> referenced + in the <literal>FROM</literal> clause. </para> </listitem> </orderedlist>