From a62a359ba2689ac01271d23f80aed74573e47d15 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 27 Sep 2007 17:42:03 +0000
Subject: [PATCH] Fix Assert failure in ExpandColumnRefStar --- what I thought
 was a can't happen condition can happen given incorrect input.  The real
 problem is that gram.y should try harder to distinguish * from "*" --- the
 latter is a legal column name per spec, and someday we ought to treat it that
 way.  However fixing that is too invasive for a back-patch, and it's too late
 for the 8.3 cycle too.  So just reduce the Assert to a plain elog for now. 
 Per report from NikhilS.

---
 src/backend/parser/parse_target.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 6623ac6ed33..af26c4c1c92 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/parser/parse_target.c,v 1.155 2007/09/06 17:31:58 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/parser/parse_target.c,v 1.156 2007/09/27 17:42:03 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -826,9 +826,12 @@ ExpandColumnRefStar(ParseState *pstate, ColumnRef *cref,
 		 * (e.g., SELECT * FROM emp, dept)
 		 *
 		 * Since the grammar only accepts bare '*' at top level of SELECT, we
-		 * need not handle the targetlist==false case here.
+		 * need not handle the targetlist==false case here.  However, we must
+		 * test for it because the grammar currently fails to distinguish
+		 * a quoted name "*" from a real asterisk.
 		 */
-		Assert(targetlist);
+		if (!targetlist)
+			elog(ERROR, "invalid use of *");
 
 		return ExpandAllTables(pstate);
 	}
-- 
GitLab