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/executor | |
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/executor')
-rw-r--r-- | src/backend/executor/execMain.c | 4 | ||||
-rw-r--r-- | src/backend/executor/execTuples.c | 11 | ||||
-rw-r--r-- | src/backend/executor/execUtils.c | 45 | ||||
-rw-r--r-- | src/backend/executor/nodeGroup.c | 8 | ||||
-rw-r--r-- | src/backend/executor/nodeUnique.c | 10 | ||||
-rw-r--r-- | src/backend/executor/spi.c | 4 |
6 files changed, 24 insertions, 58 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index ba3275f346a..c4bea118db6 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.40 1998/01/19 02:37:32 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.41 1998/02/10 04:00:45 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -563,8 +563,6 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate) */ tupdesc = CreateTupleDescCopy(tupType); - setAtttypmodForCreateTable(tupdesc, targetList, rangeTable); - intoRelationId = heap_create_with_catalog(intoName, tupdesc); FreeTupleDesc(tupdesc); diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c index e8787efd6ce..5f2336ce19d 100644 --- a/src/backend/executor/execTuples.c +++ b/src/backend/executor/execTuples.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.15 1998/01/07 21:02:48 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.16 1998/02/10 04:00:50 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -986,7 +986,8 @@ ExecTypeFromTL(List *targetList) resdom->resno, resdom->resname, /* fix for SELECT NULL ... */ - typeidTypeName(restype ? restype : UNKNOWNOID), + (restype ? restype : UNKNOWNOID), + resdom->restypmod, 0, false); @@ -1019,7 +1020,8 @@ ExecTypeFromTL(List *targetList) TupleDescInitEntry(typeInfo, fjRes->resno, fjRes->resname, - typeidTypeName(restype), + restype, + fjRes->restypmod, 0, false); /* @@ -1042,7 +1044,8 @@ ExecTypeFromTL(List *targetList) TupleDescInitEntry(typeInfo, fjRes->resno, fjRes->resname, - typeidTypeName(restype), + restype, + fjRes->restypmod, 0, false); diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 244bfdaa401..e02205828ae 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.27 1998/02/07 06:11:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.28 1998/02/10 04:00:52 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1179,46 +1179,3 @@ ExecInsertIndexTuples(TupleTableSlot *slot, if (econtext != NULL) pfree(econtext); } - -/* ---------------------------------------------------------------- - * setAtttyplenForCreateTable - - * called when we do a SELECT * INTO TABLE tab - * needed for attributes that have atttypmod like bpchar and - * varchar - * ---------------------------------------------------------------- - */ -void -setAtttypmodForCreateTable(TupleDesc tupType, List *targetList, - List *rangeTable) -{ - List *tl; - TargetEntry *tle; - Node *expr; - int varno; - - tl = targetList; - - for (varno = 0; varno < tupType->natts; varno++) - { - tle = lfirst(tl); - - if (USE_ATTTYPMOD(tupType->attrs[varno]->atttypid)) - { - expr = tle->expr; - if (expr && IsA(expr, Var)) - { - Var *var; - RangeTblEntry *rtentry; - - var = (Var *) expr; - rtentry = rt_fetch(var->varnoold, rangeTable); - tupType->attrs[varno]->atttypmod = - get_atttypmod(rtentry->relid, var->varoattno); - } - else - elog(ERROR, "setAtttypmodForCreateTable: can't get atttypmod for field (for length, etc.)"); - } - tl = lnext(tl); - } -} - diff --git a/src/backend/executor/nodeGroup.c b/src/backend/executor/nodeGroup.c index 516cd624bfc..da9f8c06a1a 100644 --- a/src/backend/executor/nodeGroup.c +++ b/src/backend/executor/nodeGroup.c @@ -13,7 +13,7 @@ * columns. (ie. tuples from the same group are consecutive) * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.14 1998/01/31 04:38:29 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.15 1998/02/10 04:00:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -417,9 +417,11 @@ sameGroup(TupleTableSlot *oldslot, continue; val1 = fmgr(typoutput, attr1, - gettypelem(tupdesc->attrs[att - 1]->atttypid)); + gettypelem(tupdesc->attrs[att - 1]->atttypid), + (int)tupdesc->attrs[att - 1]->atttypmod); val2 = fmgr(typoutput, attr2, - gettypelem(tupdesc->attrs[att - 1]->atttypid)); + gettypelem(tupdesc->attrs[att - 1]->atttypid), + (int)tupdesc->attrs[att - 1]->atttypmod); /* * now, val1 and val2 are ascii representations so we can use diff --git a/src/backend/executor/nodeUnique.c b/src/backend/executor/nodeUnique.c index ddb8d6ea660..52f3f247c9b 100644 --- a/src/backend/executor/nodeUnique.c +++ b/src/backend/executor/nodeUnique.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.12 1998/01/31 04:38:31 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.13 1998/02/10 04:00:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -196,8 +196,12 @@ ExecUnique(Unique *node) { if (isNull1) /* both are null, they are equal */ continue; - val1 = fmgr(typoutput, attr1, gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid)); - val2 = fmgr(typoutput, attr2, gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid)); + val1 = fmgr(typoutput, attr1, + gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid), + (int)tupDesc->attrs[uniqueAttrNum - 1]->atttypmod); + val2 = fmgr(typoutput, attr2, + gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid), + (int)tupDesc->attrs[uniqueAttrNum - 1]->atttypmod); /* * now, val1 and val2 are ascii representations so we can diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index cd898a1c209..103f40ac9f2 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -430,7 +430,9 @@ SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber) return (NULL); } - return (fmgr(foutoid, val, gettypelem(tupdesc->attrs[fnumber - 1]->atttypid))); + return (fmgr(foutoid, val, + gettypelem(tupdesc->attrs[fnumber - 1]->atttypid), + (int)tupdesc->attrs[fnumber - 1]->atttypmod)); } Datum |