diff options
author | Bruce Momjian <bruce@momjian.us> | 1998-02-10 04:02:59 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1998-02-10 04:02:59 +0000 |
commit | 2c482cdbf20854f75b36fdf15b9e68403473228f (patch) | |
tree | 573f7ff37c037e658675981e5b659e6171596f0d /src/backend/parser/parse_func.c | |
parent | 2535fcde2a8a56159ed90b0debc05cf3be06ac35 (diff) | |
download | postgresql-2c482cdbf20854f75b36fdf15b9e68403473228f.tar.gz postgresql-2c482cdbf20854f75b36fdf15b9e68403473228f.zip |
Pass attypmod through to executor by adding to Var and Resdom.
Diffstat (limited to 'src/backend/parser/parse_func.c')
-rw-r--r-- | src/backend/parser/parse_func.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c index 2325251ade3..79a97826409 100644 --- a/src/backend/parser/parse_func.c +++ b/src/backend/parser/parse_func.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.12 1998/02/05 04:08:42 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.13 1998/02/10 04:01:52 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -192,13 +192,10 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs, */ if (get_attnum(relid, funcname) != InvalidAttrNumber) { - Oid dummyTypeId; - - return ((Node *) make_var(pstate, + return (Node *) make_var(pstate, relid, refname, - funcname, - &dummyTypeId)); + funcname); } else { @@ -311,7 +308,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs, toid = typeTypeId(typenameType(relname)); /* replace it in the arg list */ lfirst(fargs) = - makeVar(vnum, 0, toid, 0, vnum, 0); + makeVar(vnum, 0, toid, -1, 0, vnum, 0); } else if (!attisset) { /* set functions don't have parameters */ @@ -1059,6 +1056,7 @@ setup_tlist(char *attname, Oid relid) Resdom *resnode; Var *varnode; Oid typeid; + int type_mod; int attno; attno = get_attnum(relid, attname); @@ -1066,14 +1064,16 @@ setup_tlist(char *attname, Oid relid) elog(ERROR, "cannot reference attribute '%s' of tuple params/return values for functions", attname); typeid = get_atttype(relid, attno); + type_mod = get_atttypmod(relid, attno); + resnode = makeResdom(1, typeid, - typeLen(typeidType(typeid)), + type_mod, get_attname(relid, attno), 0, (Oid) 0, 0); - varnode = makeVar(-1, attno, typeid, 0, -1, attno); + varnode = makeVar(-1, attno, typeid, type_mod, 0, -1, attno); tle = makeNode(TargetEntry); tle->resdom = resnode; @@ -1095,12 +1095,12 @@ setup_base_tlist(Oid typeid) resnode = makeResdom(1, typeid, - typeLen(typeidType(typeid)), + -1, "<noname>", 0, (Oid) 0, 0); - varnode = makeVar(-1, 1, typeid, 0, -1, 1); + varnode = makeVar(-1, 1, typeid, -1, 0, -1, 1); tle = makeNode(TargetEntry); tle->resdom = resnode; tle->expr = (Node *) varnode; |