diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 0a5a1098efc1c27286e2468159cae2399812c72b..023c9258d292013a85ca56a54d66fbcd80e3f762 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ <!-- -$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.393 2005/10/25 17:54:30 tgl Exp $ +$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.394 2005/10/26 19:21:53 tgl Exp $ Typical markup: @@ -268,9 +268,19 @@ pg_[A-Za-z0-9_] <application> </para> <para> By default, we now generate an error if a table is used in a query - without a <command>FROM</> reference. The old behavior is still + without a <literal>FROM</> reference. The old behavior is still available, but the parameter must be set to 'true' to obtain it. </para> + + <para> + It may be necessary to set <varname>add_missing_from</> to true + in order to load an existing dump file, if the dump contains any + views or rules created using the implicit-<literal>FROM</> syntax. + This should be a one-time annoyance, because + <productname>PostgreSQL</productname> 8.1 will convert + such views and rules to standard explicit-<literal>FROM</> syntax. + Subsequent dumps will therefore not have the problem. + </para> </listitem> <listitem> diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index 61a0549ee0b0e29198d1bc1450be2aedf52a38ce..efa9b49931c98096ff13f1ac72b0f53f7910a303 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_relation.c,v 1.115 2005/10/15 02:49:22 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_relation.c,v 1.116 2005/10/26 19:21:54 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1005,7 +1005,13 @@ addImplicitRTE(ParseState *pstate, RangeVar *relation) { RangeTblEntry *rte; - rte = addRangeTableEntry(pstate, relation, NULL, false, false); + /* + * Note that we set inFromCl true, so that the RTE will be listed + * explicitly if the parsetree is ever decompiled by ruleutils.c. + * This provides a migration path for views/rules that were originally + * written with implicit-RTE syntax. + */ + rte = addRangeTableEntry(pstate, relation, NULL, false, true); /* Add to joinlist and relnamespace, but not varnamespace */ addRTEtoQuery(pstate, rte, true, true, false); warnAutoRange(pstate, relation); diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 766076b7d6b65f538ff05bc2a15b1ca69bdb272f..5adb79ef6bcd8dc279b4b4215ca4aa7f72bc056f 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.291 2005/10/15 02:49:45 momjian Exp $ + * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.292 2005/10/26 19:21:55 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -476,14 +476,12 @@ typedef struct LockingClause * RTEs other than RTE_RELATION entries. * * inFromCl marks those range variables that are listed in the FROM clause. - * In SQL, the query can only refer to range variables listed in the - * FROM clause, but POSTQUEL allows you to refer to tables not listed, - * in which case a range table entry will be generated. We still support - * this POSTQUEL feature, although there is some doubt whether it's - * convenient or merely confusing. The flag is not actually needed - * anymore during parsing, since the parser uses a separate "namespace" - * data structure to control visibility, but it is needed by ruleutils.c - * to determine whether RTEs should be included in decompiled queries. + * It's false for RTEs that are added to a query behind the scenes, such + * as the NEW and OLD variables for a rule, or the subqueries of a UNION. + * This flag is not used anymore during parsing, since the parser now uses + * a separate "namespace" data structure to control visibility, but it is + * needed by ruleutils.c to determine whether RTEs should be shown in + * decompiled queries. * * requiredPerms and checkAsUser specify run-time access permissions * checks to be performed at query startup. The user must have *all*