diff options
| author | Bruce Momjian | 1998-02-10 04:02:59 +0000 |
|---|---|---|
| committer | Bruce Momjian | 1998-02-10 04:02:59 +0000 |
| commit | 2c482cdbf20854f75b36fdf15b9e68403473228f (patch) | |
| tree | 573f7ff37c037e658675981e5b659e6171596f0d /src/backend/optimizer | |
| parent | 2535fcde2a8a56159ed90b0debc05cf3be06ac35 (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.c | 3 | ||||
| -rw-r--r-- | src/backend/optimizer/plan/initsplan.c | 4 | ||||
| -rw-r--r-- | src/backend/optimizer/plan/planmain.c | 3 | ||||
| -rw-r--r-- | src/backend/optimizer/plan/setrefs.c | 5 | ||||
| -rw-r--r-- | src/backend/optimizer/prep/preptlist.c | 27 | ||||
| -rw-r--r-- | src/backend/optimizer/util/tlist.c | 9 | ||||
| -rw-r--r-- | src/backend/optimizer/util/var.c | 3 |
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)) { |
