aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-01-16 23:21:07 +0000
committerBruce Momjian <bruce@momjian.us>1998-01-16 23:21:07 +0000
commitc65ea0e040f08b59407cd74f8f0f0dd190169d46 (patch)
tree5d46c03cb5ddd61ed5e0693b261965cb2fae8b95 /src/backend/executor
parentd7427e4802fd4d7108e37544115cab83c13172ab (diff)
downloadpostgresql-c65ea0e040f08b59407cd74f8f0f0dd190169d46.tar.gz
postgresql-c65ea0e040f08b59407cd74f8f0f0dd190169d46.zip
New pg_attribute.atttypmod for type-specific information like
varchar length. Cleans up code so attlen is always length. Removed varchar() hack added earlier. Will fix bug in selecting varchar() fields, and varchar() can be variable length.
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/execAmi.c28
-rw-r--r--src/backend/executor/execMain.c9
-rw-r--r--src/backend/executor/execUtils.c75
3 files changed, 4 insertions, 108 deletions
diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c
index 675a58d649f..2349f32411e 100644
--- a/src/backend/executor/execAmi.c
+++ b/src/backend/executor/execAmi.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.15 1998/01/16 05:03:45 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.16 1998/01/16 23:19:47 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -42,7 +42,6 @@
#include "access/genam.h"
#include "access/heapam.h"
#include "catalog/heap.h"
-#include "catalog/pg_type.h"
static Pointer
ExecBeginScan(Relation relation, int nkeys, ScanKey skeys,
@@ -125,31 +124,6 @@ ExecOpenR(Oid relationOid, bool isindex)
if (relation == NULL)
elog(DEBUG, "ExecOpenR: relation == NULL, heap_open failed.");
- {
- int i;
- Relation trel = palloc(sizeof(RelationData));
- TupleDesc tdesc = palloc(sizeof(struct tupleDesc));
- AttributeTupleForm *tatt =
- palloc(sizeof(AttributeTupleForm*)*relation->rd_att->natts);
-
- memcpy(trel, relation, sizeof(RelationData));
- memcpy(tdesc, relation->rd_att, sizeof(struct tupleDesc));
- trel->rd_att = tdesc;
- tdesc->attrs = tatt;
-
- for (i = 0; i < relation->rd_att->natts; i++)
- {
- if (relation->rd_att->attrs[i]->atttypid != VARCHAROID)
- tdesc->attrs[i] = relation->rd_att->attrs[i];
- else
- {
- tdesc->attrs[i] = palloc(sizeof(FormData_pg_attribute));
- memcpy(tdesc->attrs[i], relation->rd_att->attrs[i],
- sizeof(FormData_pg_attribute));
- tdesc->attrs[i]->attlen = -1;
- }
- }
- }
return relation;
}
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index b4716cc2bb5..ecfc4d9a952 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.38 1998/01/14 15:48:09 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.39 1998/01/16 23:19:49 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -563,13 +563,8 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
*/
tupdesc = CreateTupleDescCopy(tupType);
- /* fixup to prevent zero-length columns in create */
- setVarAttrLenForCreateTable(tupdesc, targetList, rangeTable);
-
intoRelationId = heap_create_with_catalog(intoName, tupdesc);
-#ifdef NOT_USED /* it's copy ... */
- resetVarAttrLenForCreateTable(tupdesc);
-#endif
+
FreeTupleDesc(tupdesc);
/* ----------------
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 75f44e865ea..8d93ecf9cc0 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.23 1998/01/07 21:02:50 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.24 1998/01/16 23:19:52 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1177,76 +1177,3 @@ ExecInsertIndexTuples(TupleTableSlot *slot,
if (econtext != NULL)
pfree(econtext);
}
-
-/* ----------------------------------------------------------------
- * setVarAttrLenForCreateTable -
- * called when we do a SELECT * INTO TABLE tab
- * needed for attributes that have a defined length, like bpchar and
- * varchar
- * ----------------------------------------------------------------
- */
-void
-setVarAttrLenForCreateTable(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 (tupType->attrs[varno]->atttypid == BPCHAROID ||
- tupType->attrs[varno]->atttypid == VARCHAROID)
- {
- expr = tle->expr;
- if (expr && IsA(expr, Var))
- {
- Var *var;
- RangeTblEntry *rtentry;
- Relation rd;
-
- var = (Var *) expr;
- rtentry = rt_fetch(var->varnoold, rangeTable);
- rd = heap_open(rtentry->relid);
- /* set length to that defined in relation */
- tupType->attrs[varno]->attlen =
- (*rd->rd_att->attrs[var->varoattno - 1]).attlen;
- heap_close(rd);
- }
- else
- elog(ERROR, "setVarAttrLenForCreateTable: can't get length for variable-length field");
- }
- tl = lnext(tl);
- }
-}
-
-
-#ifdef NOT_USED /* look at execMain.c */
-/* ----------------------------------------------------------------
- * resetVarAttrLenForCreateTable -
- * called when we do a SELECT * INTO TABLE tab
- * needed for attributes that have a defined length, like bpchar and
- * varchar
- * resets length to -1 for those types
- * ----------------------------------------------------------------
- */
-void
-resetVarAttrLenForCreateTable(TupleDesc tupType)
-{
- int varno;
-
- for (varno = 0; varno < tupType->natts; varno++)
- {
- if (tupType->attrs[varno]->atttypid == BPCHAROID ||
- tupType->attrs[varno]->atttypid == VARCHAROID)
- /* set length to original -1 */
- tupType->attrs[varno]->attlen = -1;
- }
-}
-
-#endif