mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	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.
This commit is contained in:
		| @@ -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); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user