diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 6623ac6ed3346c79acd2b88a773f43817c4c5ba5..af26c4c1c92d1242e38552bfa17ddabff7951f38 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);
 	}