mirror of https://github.com/postgres/postgres
Change the default setting of "add_missing_from" to false. This has been
the long-term plan for this behavior for quite some time, but it is only possible now that DELETE has a USING clause so that the user can join other tables in a DELETE statement without relying on this behavior.
This commit is contained in:
parent
f53cd94a78
commit
eb4b7a0b77
|
@ -1,5 +1,5 @@
|
||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/delete.sgml,v 1.23 2005/04/07 01:51:37 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/delete.sgml,v 1.24 2005/04/08 00:59:58 neilc Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
@ -148,12 +148,6 @@ DELETE FROM films
|
||||||
In some cases the join style is easier to write or faster to
|
In some cases the join style is easier to write or faster to
|
||||||
execute than the sub-select style.
|
execute than the sub-select style.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
|
||||||
If <varname>add_missing_from</varname> is enabled, any relations
|
|
||||||
mentioned in the <literal>WHERE</literal> condition will be
|
|
||||||
implicitly added to the <literal>USING</literal> clause.
|
|
||||||
</para>
|
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.82 2005/03/10 23:21:20 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.83 2005/04/08 00:59:58 neilc Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
@ -1011,42 +1011,21 @@ SELECT 2+2;
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
A less obvious use is to abbreviate a normal
|
Note that if a <literal>FROM</literal> clause is not specified,
|
||||||
<command>SELECT</command> from tables:
|
the query cannot reference any database tables. For example, the
|
||||||
|
following query is invalid:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
SELECT distributors.* WHERE distributors.name = 'Westward';
|
SELECT distributors.* WHERE distributors.name = 'Westward';
|
||||||
|
|
||||||
did | name
|
|
||||||
-----+----------
|
|
||||||
108 | Westward
|
|
||||||
</programlisting>
|
</programlisting>
|
||||||
This works because an implicit <literal>FROM</literal> item is
|
<productname>PostgreSQL</productname> releases prior to
|
||||||
added for each table that is referenced in other parts of the
|
8.1 would accept queries of this form, and add an implicit entry
|
||||||
<command>SELECT</command> statement but not mentioned in
|
to the query's <literal>FROM</literal> clause for each table
|
||||||
<literal>FROM</literal>.
|
referenced by the query. This is no longer the default behavior,
|
||||||
</para>
|
because it does not comply with the SQL standard, and is
|
||||||
|
considered by many to be error-prone. For compatibility with
|
||||||
<para>
|
applications that rely on this behavior the <xref
|
||||||
While this is a convenient shorthand, it's easy to misuse. For
|
linkend="guc-add-missing-from"> configuration variable can be
|
||||||
example, the command
|
enabled.
|
||||||
<programlisting>
|
|
||||||
SELECT distributors.* FROM distributors d;
|
|
||||||
</programlisting>
|
|
||||||
is probably a mistake; most likely the user meant
|
|
||||||
<programlisting>
|
|
||||||
SELECT d.* FROM distributors d;
|
|
||||||
</programlisting>
|
|
||||||
rather than the unconstrained join
|
|
||||||
<programlisting>
|
|
||||||
SELECT distributors.* FROM distributors d, distributors distributors;
|
|
||||||
</programlisting>
|
|
||||||
that he will actually get. To help detect this sort of mistake,
|
|
||||||
<productname>PostgreSQL</productname> will warn if the
|
|
||||||
implicit-<literal>FROM</literal> feature is used in a
|
|
||||||
<command>SELECT</command> statement that also contains an explicit
|
|
||||||
<literal>FROM</literal> clause. Also, it is possible to disable
|
|
||||||
the implicit-<literal>FROM</literal> feature by setting the
|
|
||||||
<xref linkend="guc-add-missing-from"> parameter to false.
|
|
||||||
</para>
|
</para>
|
||||||
</refsect2>
|
</refsect2>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/show.sgml,v 1.37 2005/01/04 03:58:16 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/show.sgml,v 1.38 2005/04/08 00:59:58 neilc Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ SHOW geqo;
|
||||||
SHOW ALL;
|
SHOW ALL;
|
||||||
name | setting
|
name | setting
|
||||||
--------------------------------+----------------------------------------------
|
--------------------------------+----------------------------------------------
|
||||||
add_missing_from | on
|
add_missing_from | off
|
||||||
archive_command | unset
|
archive_command | unset
|
||||||
australian_timezones | off
|
australian_timezones | off
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.312 2005/03/29 03:01:29 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.313 2005/04/08 00:59:57 neilc Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter Id="runtime">
|
<chapter Id="runtime">
|
||||||
|
@ -3553,15 +3553,25 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
|
||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
When <literal>true</>, tables that are referenced by a query will be
|
When <literal>true</>, tables that are referenced by a query
|
||||||
automatically added to the <literal>FROM</> clause if not already
|
will be automatically added to the <literal>FROM</> clause if
|
||||||
present. The default is <literal>true</> for compatibility with
|
not already present. This behavior does not comply with the
|
||||||
previous releases of <productname>PostgreSQL</>. However, this
|
SQL standard and many people dislike it because it can mask
|
||||||
behavior is not SQL-standard, and many people dislike it because it
|
mistakes (such as referencing a table where you should have
|
||||||
can mask mistakes (such as referencing a table where you should have
|
referenced its alias). The default is <literal>false</>. This
|
||||||
referenced its alias). Set to <literal>false</> for the SQL-standard
|
variable can be enabled for compatibility with releases of
|
||||||
behavior of rejecting references to tables that are not listed in
|
<productname>PostgreSQL</> prior to 8.1, where this behavior
|
||||||
<literal>FROM</>.
|
was allowed by default.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Note that even when this variable is enabled, a warning
|
||||||
|
message will be emitted for each implicit <literal>FROM</>
|
||||||
|
entry referenced by a query. Users are encouraged to update
|
||||||
|
their applications to not rely on this behavior, by adding all
|
||||||
|
tables referenced by a query to the query's <literal>FROM</>
|
||||||
|
clause (or its <literal>USING</> clause in the case of
|
||||||
|
<command>DELETE</>).
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.257 2005/03/25 16:17:27 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.258 2005/04/08 00:59:59 neilc Exp $
|
||||||
*
|
*
|
||||||
*--------------------------------------------------------------------
|
*--------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -791,7 +791,7 @@ static struct config_bool ConfigureNamesBool[] =
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
&add_missing_from,
|
&add_missing_from,
|
||||||
true, NULL, NULL
|
false, NULL, NULL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT,
|
{"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT,
|
||||||
|
|
|
@ -313,7 +313,7 @@
|
||||||
|
|
||||||
# - Previous Postgres Versions -
|
# - Previous Postgres Versions -
|
||||||
|
|
||||||
#add_missing_from = true
|
#add_missing_from = false
|
||||||
#regex_flavor = advanced # advanced, extended, or basic
|
#regex_flavor = advanced # advanced, extended, or basic
|
||||||
#sql_inheritance = true
|
#sql_inheritance = true
|
||||||
#default_with_oids = false
|
#default_with_oids = false
|
||||||
|
|
Loading…
Reference in New Issue