summaryrefslogtreecommitdiff
path: root/src/backend/optimizer
diff options
context:
space:
mode:
authorBruce Momjian1998-02-10 04:02:59 +0000
committerBruce Momjian1998-02-10 04:02:59 +0000
commit2c482cdbf20854f75b36fdf15b9e68403473228f (patch)
tree573f7ff37c037e658675981e5b659e6171596f0d /src/backend/optimizer
parent2535fcde2a8a56159ed90b0debc05cf3be06ac35 (diff)
Pass attypmod through to executor by adding to Var and Resdom.
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r--src/backend/optimizer/plan/createplan.c3
-rw-r--r--src/backend/optimizer/plan/initsplan.c4
-rw-r--r--src/backend/optimizer/plan/planmain.c3
-rw-r--r--src/backend/optimizer/plan/setrefs.c5
-rw-r--r--src/backend/optimizer/prep/preptlist.c27
-rw-r--r--src/backend/optimizer/util/tlist.c9
-rw-r--r--src/backend/optimizer/util/var.c3
7 files changed, 30 insertions, 24 deletions
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 2b53f1875fe..f6a1470be8e 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.24 1998/01/20 22:11:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.25 1998/02/10 04:01:09 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -701,6 +701,7 @@ fix_indxqual_references(Node *clause, Path *index_path)
makeVar((Index) lfirsti(index_path->parent->relids),
1, /* func indices have one key */
((Func *) ((Expr *) clause)->oper)->functype,
+ -1,
0,
(Index) lfirsti(index_path->parent->relids),
0);
diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index cb0bd085875..322c272e752 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.9 1998/01/20 22:11:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.10 1998/02/10 04:01:11 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -116,7 +116,7 @@ add_missing_vars_to_base_rels(Query *root, List *tlist)
!rel_member(relids, root->base_relation_list_))
{
- var = makeVar(varno, -2, 26, 0, varno, -2);
+ var = makeVar(varno, -2, -1, 26, 0, varno, -2);
/* add it to base_relation_list_ */
result = get_base_rel(root, varno);
add_tl_element(result, var);
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c
index 1c59f64a4c8..10e67b76cd2 100644
--- a/src/backend/optimizer/plan/planmain.c
+++ b/src/backend/optimizer/plan/planmain.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.17 1998/01/20 22:11:29 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.18 1998/02/10 04:01:12 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -464,6 +464,7 @@ make_groupPlan(List **tlist,
else
te->expr = (Node *) makeVar(1, resdom->resno,
resdom->restype,
+ resdom->restypmod,
0, -1, resdom->resno);
}
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index 284ac836f63..16fd96aae1b 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.16 1998/01/20 22:11:32 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.17 1998/02/10 04:01:13 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -440,6 +440,7 @@ replace_joinvar_refs(Var *var, List *outer_tlist, List *inner_tlist)
return (makeVar(OUTER,
outer_resdom->resno,
var->vartype,
+ var->vartypmod,
0,
var->varnoold,
var->varoattno));
@@ -454,6 +455,7 @@ replace_joinvar_refs(Var *var, List *outer_tlist, List *inner_tlist)
return (makeVar(INNER,
inner_resdom->resno,
var->vartype,
+ var->vartypmod,
0,
var->varnoold,
var->varoattno));
@@ -499,6 +501,7 @@ tlist_temp_references(Oid tempid,
(Node *) makeVar(tempid,
xtl->resdom->resno,
xtl->resdom->restype,
+ xtl->resdom->restypmod,
0,
tempid,
oattno));
diff --git a/src/backend/optimizer/prep/preptlist.c b/src/backend/optimizer/prep/preptlist.c
index ad2c697db5a..43ba76ff54a 100644
--- a/src/backend/optimizer/prep/preptlist.c
+++ b/src/backend/optimizer/prep/preptlist.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.8 1998/01/20 22:11:34 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.9 1998/02/10 04:01:15 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -108,13 +108,13 @@ preprocess_targetlist(List *tlist,
resdom = makeResdom(length(t_list) + 1,
27,
- 6,
+ -1,
"ctid",
0,
0,
1);
- var = makeVar(result_relation, -1, 27, 0, result_relation, -1);
+ var = makeVar(result_relation, -1, 27, -1, 0, result_relation, -1);
ctid = makeNode(TargetEntry);
ctid->resdom = resdom;
@@ -260,23 +260,20 @@ new_relation_targetlist(Oid relid, Index rt_index, NodeTag node_type)
AttrNumber attno;
List *t_list = NIL;
char *attname;
+ int typlen;
Oid atttype = 0;
- int16 typlen = 0;
bool attisset = false;
-/* Oid type_id; */
-/* type_id = RelationIdGetTypeId(relid); */
-
for (attno = 1; attno <= get_relnatts(relid); attno++)
{
- attname = get_attname( /* type_id, */ relid, attno);
- atttype = get_atttype( /* type_id, */ relid, attno);
+ attname = get_attname(relid, attno);
+ atttype = get_atttype(relid, attno);
/*
* Since this is an append or replace, the size of any set
* attribute is the size of the OID used to represent it.
*/
- attisset = get_attisset( /* type_id, */ relid, attname);
+ attisset = get_attisset(relid, attname);
if (attisset)
typlen = typeLen(typeidType(OIDOID));
else
@@ -300,14 +297,14 @@ new_relation_targetlist(Oid relid, Index rt_index, NodeTag node_type)
temp,
(Datum) typedefault,
(typedefault == (struct varlena *) NULL),
- /* XXX this is bullshit */
+ /* XXX ? */
false,
false, /* not a set */
false);
temp3 = MakeTLE(makeResdom(attno,
atttype,
- typlen,
+ -1,
attname,
0,
(Oid) 0,
@@ -322,11 +319,13 @@ new_relation_targetlist(Oid relid, Index rt_index, NodeTag node_type)
TargetEntry *temp_list = NULL;
temp_var =
- makeVar(rt_index, attno, atttype, 0, rt_index, attno);
+ makeVar(rt_index, attno, atttype,
+ get_atttypmod(relid, attno),
+ 0, rt_index, attno);
temp_list = MakeTLE(makeResdom(attno,
atttype,
- typlen,
+ get_atttypmod(relid, attno),
attname,
0,
(Oid) 0,
diff --git a/src/backend/optimizer/util/tlist.c b/src/backend/optimizer/util/tlist.c
index edac3e8bf4b..805ac38b902 100644
--- a/src/backend/optimizer/util/tlist.c
+++ b/src/backend/optimizer/util/tlist.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.9 1998/01/20 22:11:41 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.10 1998/02/10 04:01:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -108,6 +108,7 @@ add_tl_element(Rel *rel, Var *var)
Var *newvar = makeVar(var->varno,
var->varattno,
var->vartype,
+ var->vartypmod,
var->varlevelsup,
var->varno,
var->varoattno);
@@ -137,7 +138,7 @@ create_tl_element(Var *var, int resdomno)
tlelement->resdom =
makeResdom(resdomno,
var->vartype,
- get_typlen(var->vartype),
+ var->vartypmod,
NULL,
(Index) 0,
(Oid) 0,
@@ -398,7 +399,7 @@ flatten_tlist(List *tlist)
r = makeResdom(last_resdomno,
var->vartype,
- get_typlen(var->vartype),
+ var->vartypmod,
NULL,
(Index) 0,
(Oid) 0,
@@ -591,7 +592,7 @@ AddGroupAttrToTlist(List *tlist, List *grpCl)
r = makeResdom(last_resdomno,
var->vartype,
- get_typlen(var->vartype),
+ var->vartypmod,
NULL,
(Index) 0,
(Oid) 0,
diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c
index e3ed305ed88..41624a17107 100644
--- a/src/backend/optimizer/util/var.c
+++ b/src/backend/optimizer/util/var.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.8 1998/01/20 22:11:43 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.9 1998/02/10 04:01:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -209,6 +209,7 @@ var_equal(Var *var1, Var *var2)
if (IsA(var1, Var) &&IsA(var2, Var) &&
(((Var *) var1)->varno == ((Var *) var2)->varno) &&
(((Var *) var1)->vartype == ((Var *) var2)->vartype) &&
+ (((Var *) var1)->vartypmod == ((Var *) var2)->vartypmod) &&
(((Var *) var1)->varlevelsup == ((Var *) var2)->varlevelsup) &&
(((Var *) var1)->varattno == ((Var *) var2)->varattno))
{