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