]> granicus.if.org Git - postgresql/commitdiff
Fix Assert failure in ExpandColumnRefStar --- what I thought was a can't
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Sep 2007 17:42:03 +0000 (17:42 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Sep 2007 17:42:03 +0000 (17:42 +0000)
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

index 6623ac6ed3346c79acd2b88a773f43817c4c5ba5..af26c4c1c92d1242e38552bfa17ddabff7951f38 100644 (file)
@@ -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);
        }