diff --git a/doc/src/sgml/ref/delete.sgml b/doc/src/sgml/ref/delete.sgml index 954391a228b0647fd300f18c2f4a6953bb581ef9..598936cd5acd07d3a2148b7713d434e767e3a216 100644 --- a/doc/src/sgml/ref/delete.sgml +++ b/doc/src/sgml/ref/delete.sgml @@ -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 --> @@ -148,12 +148,6 @@ DELETE FROM films In some cases the join style is easier to write or faster to execute than the sub-select style. </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> diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 93218e16c2eac512cac1d12f9b053bedc1a104d6..9044adfa8c89f4f39aa2c95718d52c22b0290471 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -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 --> @@ -1011,42 +1011,21 @@ SELECT 2+2; </para> <para> - A less obvious use is to abbreviate a normal - <command>SELECT</command> from tables: + Note that if a <literal>FROM</literal> clause is not specified, + the query cannot reference any database tables. For example, the + following query is invalid: <programlisting> SELECT distributors.* WHERE distributors.name = 'Westward'; - - did | name ------+---------- - 108 | Westward -</programlisting> - This works because an implicit <literal>FROM</literal> item is - added for each table that is referenced in other parts of the - <command>SELECT</command> statement but not mentioned in - <literal>FROM</literal>. - </para> - - <para> - While this is a convenient shorthand, it's easy to misuse. For - example, the command -<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. + <productname>PostgreSQL</productname> releases prior to + 8.1 would accept queries of this form, and add an implicit entry + to the query's <literal>FROM</literal> clause for each table + referenced by the query. This is no longer the default behavior, + because it does not comply with the SQL standard, and is + considered by many to be error-prone. For compatibility with + applications that rely on this behavior the <xref + linkend="guc-add-missing-from"> configuration variable can be + enabled. </para> </refsect2> diff --git a/doc/src/sgml/ref/show.sgml b/doc/src/sgml/ref/show.sgml index 8fb07bc9e46b19f081f6d0ae073383fa207b6c3a..5fdfa2b4b06d6e8ccd3e7f43c419bf1eb67ff00c 100644 --- a/doc/src/sgml/ref/show.sgml +++ b/doc/src/sgml/ref/show.sgml @@ -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 --> @@ -166,7 +166,7 @@ SHOW geqo; SHOW ALL; name | setting --------------------------------+---------------------------------------------- - add_missing_from | on + add_missing_from | off archive_command | unset australian_timezones | off . diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index f019dbb4ae640297d83a6d17b194597046ad327a..e5567abf27927cfbe420fbb47fdfc2510861e190 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -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"> @@ -3553,15 +3553,25 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </indexterm> <listitem> <para> - When <literal>true</>, tables that are referenced by a query will be - automatically added to the <literal>FROM</> clause if not already - present. The default is <literal>true</> for compatibility with - previous releases of <productname>PostgreSQL</>. However, this - behavior is not SQL-standard, and many people dislike it because it - can mask mistakes (such as referencing a table where you should have - referenced its alias). Set to <literal>false</> for the SQL-standard - behavior of rejecting references to tables that are not listed in - <literal>FROM</>. + When <literal>true</>, tables that are referenced by a query + will be automatically added to the <literal>FROM</> clause if + not already present. This behavior does not comply with the + SQL standard and many people dislike it because it can mask + mistakes (such as referencing a table where you should have + referenced its alias). The default is <literal>false</>. This + variable can be enabled for compatibility with releases of + <productname>PostgreSQL</> prior to 8.1, where this behavior + 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> </listitem> </varlistentry> diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 1db12c23135f920e3b86b9010b354f848d636ee4..4658991e7341fa3d602e578bc21db6dbbfffa95e 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut <peter_e@gmx.net>. * * 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 }, &add_missing_from, - true, NULL, NULL + false, NULL, NULL }, { {"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 113021fd79f175b87cf154b18d9f286e11923e37..6b06afcb7fdb17187586c9a7fe9d61a6060a50ba 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -313,7 +313,7 @@ # - Previous Postgres Versions - -#add_missing_from = true +#add_missing_from = false #regex_flavor = advanced # advanced, extended, or basic #sql_inheritance = true #default_with_oids = false