From 2ea370a3ceea5f3a30df709dea08c41c1f19e486 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 3 Jun 2000 04:41:34 +0000
Subject: [PATCH] New warning code about auto-created range table entries.

---
 src/backend/parser/parse_func.c           | 14 +++-------
 src/backend/parser/parse_relation.c       | 31 ++++++++++++++++++-----
 src/include/parser/parse_relation.h       |  3 ++-
 src/test/regress/expected/select_into.out |  3 +++
 4 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index 6450d34aba..878c553005 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.81 2000/05/30 00:49:50 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.82 2000/06/03 04:41:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -307,11 +307,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
 				rte = addRangeTableEntry(pstate, refname,
 										 makeAttr(refname, NULL),
 										 FALSE, FALSE, TRUE);
-#ifdef WARN_FROM
-				elog(NOTICE, "Adding missing FROM-clause entry%s for table %s",
-				  pstate->parentParseState != NULL ? " in subquery" : "",
-					 refname);
-#endif
+				warnAutoRange(pstate, refname);
 			}
 
 			relname = rte->relname;
@@ -525,11 +521,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
 				rte = addRangeTableEntry(pstate, refname,
 										 makeAttr(refname, NULL),
 										 FALSE, FALSE, TRUE);
-#ifdef WARN_FROM
-				elog(NOTICE, "Adding missing FROM-clause entry%s for table %s",
-				  pstate->parentParseState != NULL ? " in subquery" : "",
-					 refname);
-#endif
+				warnAutoRange(pstate, refname);
 			}
 
 			relname = rte->relname;
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 4bb65cf27e..9360c1486c 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.40 2000/04/12 17:15:27 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.41 2000/06/03 04:41:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -373,11 +373,7 @@ expandAll(ParseState *pstate, char *relname, Attr *ref, int *this_resno)
 	{
 		rte = addRangeTableEntry(pstate, relname, ref,
 								 FALSE, FALSE, TRUE);
-#ifdef WARN_FROM
-		elog(NOTICE, "Adding missing FROM-clause entry%s for table %s",
-			 pstate->parentParseState != NULL ? " in subquery" : "",
-			 refname);
-#endif
+		warnAutoRange(pstate, ref->relname);
 	}
 
 	rel = heap_open(rte->relid, AccessShareLock);
@@ -526,3 +522,26 @@ attnumTypeId(Relation rd, int attid)
 	 */
 	return rd->rd_att->attrs[attid - 1]->atttypid;
 }
+
+void
+warnAutoRange(ParseState *pstate, char *refname)
+{
+	List	   *temp;
+	bool		foundInFromCl = false;
+
+	foreach(temp, pstate->p_rtable)
+	{
+		RangeTblEntry *rte = lfirst(temp);
+
+		if (rte->inFromCl)
+		{
+			foundInFromCl = true;
+			break;
+		}
+	}
+	if (foundInFromCl)
+		elog(NOTICE, "Adding missing FROM-clause entry%s for table %s",
+			pstate->parentParseState != NULL ? " in subquery" : "",
+			refname);
+}
+
diff --git a/src/include/parser/parse_relation.h b/src/include/parser/parse_relation.h
index 340afcc2f3..15945680bc 100644
--- a/src/include/parser/parse_relation.h
+++ b/src/include/parser/parse_relation.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_relation.h,v 1.16 2000/04/12 17:16:45 momjian Exp $
+ * $Id: parse_relation.h,v 1.17 2000/06/03 04:41:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -35,5 +35,6 @@ extern int	specialAttNum(char *a);
 extern bool attnameIsSet(Relation rd, char *name);
 extern int	attnumAttNelems(Relation rd, int attid);
 extern Oid	attnumTypeId(Relation rd, int attid);
+extern void warnAutoRange(ParseState *pstate, char *refname);
 
 #endif	 /* PARSE_RELATION_H */
diff --git a/src/test/regress/expected/select_into.out b/src/test/regress/expected/select_into.out
index aa157c9eed..5c550ced7a 100644
--- a/src/test/regress/expected/select_into.out
+++ b/src/test/regress/expected/select_into.out
@@ -5,9 +5,12 @@ SELECT *
    INTO TABLE tmp1
    FROM tmp
    WHERE onek.unique1 < 2;
+NOTICE:  Adding missing FROM-clause entry for table onek
 DROP TABLE tmp1;
 SELECT *
    INTO TABLE tmp1
    FROM tmp
    WHERE onek2.unique1 < 2;
 DROP TABLE tmp1;
+NOTICE:  Adding missing FROM-clause entry for table onek
+
-- 
2.24.1