Changeset: 09069a9605ad for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/09069a9605ad
Modified Files:
        sql/server/rel_optimizer.c
Branch: pushcands
Log Message:

removed unused optimizer


diffs (152 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -4653,7 +4653,7 @@ rel_push_join_exps_down(visitor *v, sql_
                                rel_select_add_exp(v->sql->sa, rel->l, e);
                                list_remove_node(rel->exps, NULL, n);
                                v->changes++;
-                       } else if (right && (rel->op != op_anti || (e->flag != 
mark_notin && e->flag != mark_in)) && 
+                       } else if (right && (rel->op != op_anti || (e->flag != 
mark_notin && e->flag != mark_in)) &&
                                           rel_rebind_exp(v->sql, rel->r, e)) { 
/* select expressions on right */
                                sql_rel *r = rel->r;
                                if (!is_select(r->op)) {
@@ -8677,130 +8677,6 @@ rel_split_outerjoin(visitor *v, sql_rel 
        return rel;
 }
 
-static sql_exp *
-exp_indexcol(mvc *sql, sql_exp *e, const char *tname, const char *cname, int 
de, bit unique)
-{
-       sql_subtype *rt = sql_bind_localtype(de==1?"bte":de==2?"sht":"int");
-       sql_exp *u = exp_atom_bool(sql->sa, unique);
-       sql_subfunc *f = sql_bind_func_result(sql, "sys", "index", F_FUNC, rt, 
2, exp_subtype(e), exp_subtype(u));
-
-       e = exp_binop(sql->sa, e, u, f);
-       exp_setname(sql->sa, e, tname, cname);
-       return e;
-}
-
-static sql_exp *
-exp_stringscol(mvc *sql, sql_exp *e, const char *tname, const char *cname)
-{
-       sql_subfunc *f = sql_bind_func(sql, "sys", "strings", exp_subtype(e), 
NULL, F_FUNC);
-
-       e = exp_unop(sql->sa, e, f);
-       exp_setname(sql->sa, e, tname, cname);
-       return e;
-}
-
-static sql_rel *
-rel_dicttable(mvc *sql, sql_column *c, const char *tname, int de)
-{
-       sql_rel *rel = rel_create(sql->sa);
-       sql_exp *e, *ie;
-       int nr = 0;
-       char name[16], *nme;
-       if(!rel)
-               return NULL;
-
-       e = exp_column(sql->sa, tname, c->base.name, &c->type, CARD_MULTI, 
c->null, 0);
-       rel->l = NULL;
-       rel->r = c;
-       rel->op = op_basetable;
-       rel->exps = new_exp_list(sql->sa);
-
-       ie = exp_indexcol(sql, e, tname, c->base.name, de, 1);
-        nr = ++sql->label;
-       nme = sa_strdup(sql->sa, number2name(name, sizeof(name), nr));
-       exp_setname(sql->sa, ie, nme, nme);
-       append(rel->exps, ie);
-
-       ie = exp_stringscol(sql, e, tname, c->base.name);
-        nr = ++sql->label;
-       nme = sa_strdup(sql->sa, number2name(name, sizeof(name), nr));
-       exp_setname(sql->sa, ie, nme, nme);
-       append(rel->exps, ie);
-       e->p = prop_create(sql->sa, PROP_HASHCOL, e->p);
-
-       rel->card = CARD_MULTI;
-       rel->nrcols = 2;
-       return rel;
-}
-
-/* rewrite merge tables into union of base tables and call optimizer again */
-static sql_rel *
-rel_add_dicts(visitor *v, sql_rel *rel)
-{
-       if (is_basetable(rel->op) && rel->l) {
-               node *n;
-               sql_table *t = rel->l;
-               list *l = sa_list(v->sql->sa), *vcols = NULL, *pexps = 
sa_list(v->sql->sa);
-
-               for (n = rel->exps->h; n; n = n->next) {
-                       sql_exp *e = n->data, *ne = NULL;
-                       const char *rname = exp_relname(e)?exp_relname(e):e->l;
-                       const char *oname = e->r;
-                       int de;
-
-                       if (!is_func(e->type) && oname[0] != '%') {
-                               sql_column *c = find_sql_column(t, oname);
-
-                               if ((de = mvc_is_duplicate_eliminated(v->sql, 
c)) != 0) {
-                                       int nr = ++v->sql->label;
-                                       char name[16], *nme;
-                                       sql_rel *vt = rel_dicttable(v->sql, c, 
rname, de);
-
-                                       nme = sa_strdup(v->sql->sa, 
number2name(name, sizeof(name), nr));
-                                       if (!vcols)
-                                               vcols = sa_list(v->sql->sa);
-                                       append(vcols, vt);
-                                       e = exp_indexcol(v->sql, e, nme, nme, 
de, 0);
-                                       ne = exp_ref(v->sql, e);
-                                       append(vcols, ne);
-                                       append(vcols, n->data);
-                                       v->changes++;
-                               }
-                       }
-                       list_append(l, e);
-                       if (!ne)
-                               list_append(pexps, e);
-               }
-               rel_set_exps(rel, l);
-
-               /* add joins for double_eliminated (large) columns */
-               if (vcols) {
-                       node *n;
-
-                       for(n = vcols->h; n; n = n->next->next->next) {
-                               sql_rel *vt = n->data;
-                               sql_exp *ic = n->next->data, *vti = NULL, *vtv;
-                               sql_exp *c = n->next->next->data, *cmp;
-
-                               rel = rel_crossproduct(v->sql->sa, rel, vt, 
op_join);
-                               vti = vt->exps->h->data;
-                               vtv = vt->exps->h->next->data;
-                               vti = exp_ref(v->sql, vti);
-                               cmp = exp_compare(v->sql->sa, ic, vti, 
cmp_equal);
-                               cmp->p = prop_create(v->sql->sa, PROP_FETCH, 
cmp->p);
-                               rel_join_add_exp( v->sql->sa, rel, cmp);
-
-                               vtv = exp_ref(v->sql, vtv);
-                               if (exp_name(c))
-                                       exp_prop_alias(v->sql->sa, vtv, c);
-                               append(pexps, vtv);
-                       }
-                       rel = rel_project(v->sql->sa, rel, pexps);
-               }
-       }
-       return rel;
-}
-
 static int
 exp_range_overlap(atom *min, atom *max, atom *emin, atom *emax, bool 
min_exclusive, bool max_exclusive)
 {
@@ -9788,8 +9664,6 @@ optimize_rel(mvc *sql, sql_rel *rel, int
 
        if (gp.has_mergetable)
                rel = rel_visitor_topdown(&v, rel, &rel_merge_table_rewrite);
-       if (level <= 0 && mvc_debug_on(sql,8))
-               rel = rel_visitor_topdown(&v, rel, &rel_add_dicts);
 
        *g_changes = v.changes;
        return rel;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to