aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_func.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-02-10 04:02:59 +0000
committerBruce Momjian <bruce@momjian.us>1998-02-10 04:02:59 +0000
commit2c482cdbf20854f75b36fdf15b9e68403473228f (patch)
tree573f7ff37c037e658675981e5b659e6171596f0d /src/backend/parser/parse_func.c
parent2535fcde2a8a56159ed90b0debc05cf3be06ac35 (diff)
downloadpostgresql-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.c22
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;