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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list