mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
I made several adjustments to my earlier patch to handle the
condition where the target label is ambiguous.
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.17 1998/05/29 14:00:19 thomas Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.18 1998/06/05 03:49:18 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -194,17 +194,32 @@ find_targetlist_entry(ParseState *pstate, SortGroupBy *sortgroupby, List *tlist)
|
||||
* it will not be projected into the final tuple.
|
||||
* daveh@insightdist.com 5/20/98
|
||||
*/
|
||||
if ( ! target_result) {
|
||||
if ( ! target_result && sortgroupby->name) {
|
||||
List *p_target = tlist;
|
||||
Ident *missingTargetId = (Ident *)makeNode(Ident);
|
||||
TargetEntry *tent = makeNode(TargetEntry);
|
||||
|
||||
/* Fill in the constructed Ident node */
|
||||
missingTargetId->type = T_Ident;
|
||||
missingTargetId->name = palloc(strlen(sortgroupby->name) + 1);
|
||||
strcpy(missingTargetId->name, sortgroupby->name);
|
||||
|
||||
transformTargetId(pstate, missingTargetId, tent, missingTargetId->name, TRUE);
|
||||
if (sortgroupby->range) {
|
||||
Attr *missingTarget = (Attr *)makeNode(Attr);
|
||||
missingTarget->type = T_Attr;
|
||||
|
||||
missingTarget->relname = palloc(strlen(sortgroupby->range) + 1);
|
||||
strcpy(missingTarget->relname, sortgroupby->range);
|
||||
|
||||
missingTarget->attrs = lcons(makeString(sortgroupby->name), NIL);
|
||||
|
||||
transformTargetId(pstate, (Node*)missingTarget, tent, sortgroupby->name, TRUE);
|
||||
}
|
||||
else {
|
||||
Ident *missingTarget = (Ident *)makeNode(Ident);
|
||||
missingTarget->type = T_Ident;
|
||||
|
||||
missingTarget->name = palloc(strlen(sortgroupby->name) + 1);
|
||||
strcpy(missingTarget->name, sortgroupby->name);
|
||||
|
||||
transformTargetId(pstate, (Node*)missingTarget, tent, sortgroupby->name, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/* Add to the end of the target list */
|
||||
while (lnext(p_target) != NIL) {
|
||||
|
Reference in New Issue
Block a user