diff options
Diffstat (limited to 'src/backend/parser/parse_target.c')
-rw-r--r-- | src/backend/parser/parse_target.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c index 7de957935d1..58dd3a28b35 100644 --- a/src/backend/parser/parse_target.c +++ b/src/backend/parser/parse_target.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.19 1998/07/20 19:53:52 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.20 1998/08/05 04:49:11 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -32,11 +32,7 @@ static List *ExpandAllTables(ParseState *pstate); static char *FigureColname(Node *expr, Node *resval); -static TargetEntry * -MakeTargetlistExpr(ParseState *pstate, - char *colname, - Node *expr, - List *arrayRef); + Node * SizeTargetExpr(ParseState *pstate, Node *expr, @@ -129,7 +125,7 @@ printf("transformTargetIdent- transform type %d to %d\n", { expr = coerce_type(pstate, node, attrtype_id, attrtype_target); expr = transformExpr(pstate, expr, EXPR_COLUMN_FIRST); - tent = MakeTargetlistExpr(pstate, *resname, expr, FALSE); + tent = MakeTargetlistExpr(pstate, *resname, expr, FALSE, FALSE); expr = tent->expr; } else @@ -293,7 +289,7 @@ printf("transformTargetList: decode T_Expr\n"); constval->val.str = save_str; tent = MakeTargetlistExpr(pstate, res->name, (Node *) make_const(constval), - NULL); + NULL, FALSE); pfree(save_str); } else @@ -326,7 +322,7 @@ printf("transformTargetList: decode T_Expr\n"); } res->name = colname; tent = MakeTargetlistExpr(pstate, res->name, expr, - res->indirection); + res->indirection, FALSE); } break; } @@ -570,12 +566,17 @@ printf("SizeTargetExpr: no conversion function for sizing\n"); * For type mismatches between expressions and targets, use the same * techniques as for function and operator type coersion. * - thomas 1998-05-08 + * + * Added resjunk flag and made extern so that it can be use by GROUP/ + * ORDER BY a function or expersion not in the target_list + * - daveh@insightdist.com 1998-07-31 */ -static TargetEntry * +TargetEntry * MakeTargetlistExpr(ParseState *pstate, char *colname, Node *expr, - List *arrayRef) + List *arrayRef, + int16 resjunk) { Oid type_id, attrtype; @@ -698,7 +699,7 @@ printf("MakeTargetlistExpr: attrtypmod is %d\n", (int4) attrtypmod); colname, (Index) 0, (Oid) 0, - 0); + resjunk); tent = makeTargetEntry(resnode, expr); |