mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Allow select oid,* from table. Allow * anywhere in target list.
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.16 1996/11/26 03:17:45 bryanh Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.17 1996/11/29 15:56:16 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1127,10 +1127,14 @@ transformTargetList(ParseState *pstate, List *targetlist)
|
||||
* (eg. SELECT * FROM emp)
|
||||
*/
|
||||
if (att->relname!=NULL && !strcmp(att->relname, "*")) {
|
||||
if(lnext(targetlist)!=NULL)
|
||||
elog(WARN, "cannot expand target list *, ...");
|
||||
p_target = expandAllTables(pstate);
|
||||
if (tail_p_target == NIL)
|
||||
p_target = tail_p_target = expandAllTables(pstate);
|
||||
else
|
||||
lnext(tail_p_target) = expandAllTables(pstate);
|
||||
|
||||
while(lnext(tail_p_target)!=NIL)
|
||||
/* make sure we point to the last target entry */
|
||||
tail_p_target = lnext(tail_p_target);
|
||||
/*
|
||||
* skip rest of while loop
|
||||
*/
|
||||
@ -1147,14 +1151,13 @@ transformTargetList(ParseState *pstate, List *targetlist)
|
||||
/* tail_p_target is the target list we're building in the while
|
||||
* loop. Make sure we fix it after appending more nodes.
|
||||
*/
|
||||
if (tail_p_target == NIL) {
|
||||
if (tail_p_target == NIL)
|
||||
p_target = tail_p_target = expandAll(pstate, att->relname,
|
||||
att->relname, &pstate->p_last_resno);
|
||||
} else {
|
||||
else
|
||||
lnext(tail_p_target) =
|
||||
expandAll(pstate, att->relname, att->relname,
|
||||
&pstate->p_last_resno);
|
||||
}
|
||||
while(lnext(tail_p_target)!=NIL)
|
||||
/* make sure we point to the last target entry */
|
||||
tail_p_target = lnext(tail_p_target);
|
||||
|
Reference in New Issue
Block a user