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:09 +0000 (17:42 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Sep 2007 17:42:09 +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 a72cd01d82b0437c10c54f4182f91f564f22167a..f1a48b7148bc5f039465b425d42bc2995429e787 100644 (file)
@@ -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);
        }