Changeset: 2133f3a8f48c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2133f3a8f48c
Modified Files:
        monetdb5/optimizer/opt_support.c
        sql/server/rel_exp.c
        sql/server/rel_rel.c
        sql/server/rel_select.c
        
sql/test/BugTracker-2012/Tests/correlated_groupby_in_selection.Bug-3011.stable.out
Branch: sq2
Log Message:

cleanup


diffs (truncated from 735 to 300 lines):

diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -345,7 +345,6 @@ safetyBarrier(InstrPtr p, InstrPtr q)
        return FALSE;
 }
 
-
 int
 isUpdateInstruction(InstrPtr p){
        if ( getModuleId(p) == sqlRef &&
@@ -364,6 +363,7 @@ isUpdateInstruction(InstrPtr p){
                        return TRUE;
        return FALSE;
 }
+
 int
 hasSideEffects(MalBlkPtr mb, InstrPtr p, int strict)
 {
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -222,8 +222,10 @@ exp_op( sql_allocator *sa, list *l, sql_
        e->card = exps_card(l);
        if (!l || list_length(l) == 0) 
                e->card = CARD_ATOM; /* unop returns a single atom */
+       /* 
        if (f->func->side_effect)
                e->card = CARD_MULTI;
+               */
        e->l = l;
        e->f = f; 
        return e;
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -851,9 +851,7 @@ rel_groupby(mvc *sql, sql_rel *l, list *
                        append(aggrs, ne);
                }
        }
-#if 0
 
-#endif
        rel->l = l;
        rel->r = groupbyexps;
        rel->exps = aggrs;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -42,14 +42,8 @@ rel_table_projections( mvc *sql, sql_rel
        if (!rel)
                return NULL;
 
-       if (!tname) {
-               //if ((is_project(rel->op) || rel->op == op_select || 
is_semi(rel->op)) && rel->l)
-               //if (!is_base(rel->op) && is_base(rel->op))
-                       return _rel_projections(sql, rel, NULL, 1, 0, 1);
-               //else
-                       //return NULL;
-               /* return rel_projections(sql, rel, NULL, 1, 0); */
-       }
+       if (!tname)
+               return _rel_projections(sql, rel, NULL, 1, 0, 1);
 
        switch(rel->op) {
        case op_join:
@@ -187,74 +181,6 @@ rel_find_lastexp(sql_rel *rel )
        return rel->exps->t->data;
 }
 
-#if 0
-static sql_rel*
-rel_project2groupby(mvc *sql, sql_rel *g)
-{
-       if (g->op == op_project) {
-               node *en;
-               
-               reset_processed(g);
-               if (!g->exps)
-                       g->exps = new_exp_list(sql->sa);
-               for (en = g->exps->h; en; en = en->next) {
-                       sql_exp *e = en->data;
-
-                       if (e->card > CARD_ATOM) {
-                               if (e->type == e_column && e->r) {
-                                       return sql_error(sql, 02, 
SQLSTATE(42000) "Cannot use non GROUP BY column '%s' in query results without 
an aggregate function", (char *) e->r);
-                               } else {
-                                       return sql_error(sql, 02, 
SQLSTATE(42000) "Cannot use non GROUP BY column in query results without an 
aggregate function");
-                               }
-                       }
-               }
-               g->card = CARD_ATOM; /* no groupby expressions */
-               g->op = op_groupby;
-               g->r = new_exp_list(sql->sa); /* add empty groupby column list 
*/
-               g = rel_project(sql->sa, g, rel_projections(sql, g, NULL, 1, 
1));
-               reset_processed(g);
-               return g;
-       }
-       return NULL;
-}
-
-static sql_rel*
-revert_project2groupby(sql_rel *p)
-{
-       /* change too recusive find project/groupby */
-       if (p && p->op == op_project) {
-               sql_rel *g = p->l;
-
-               if (g->op == op_groupby) {
-                       sql_rel *l = g->l;
-                       g->r = NULL;
-                       g->op = op_project;
-                       if (l)
-                               g->card = l->card;
-                       return g;
-               }
-       }
-       return p;
-}
-
-static void
-rel_intermediates_add_exp(mvc *sql, sql_rel *p, sql_rel *op, sql_exp *in)
-{
-       while(op && p != op) {
-               sql_rel *pp = op;
-
-               while(pp->l && pp->l != p) 
-                       pp = pp->l;
-               if (pp && pp->l == p && pp->op == op_project) {
-                       in = exp_ref(sql->sa, in);
-                       in = rel_project_add_exp(sql, pp, in);
-               }
-               p = pp;
-       }
-}
-
-#endif
-
 static sql_rel *
 rel_orderby(mvc *sql, sql_rel *l)
 {
@@ -960,7 +886,6 @@ table_ref(sql_query *query, sql_rel *rel
                        /* Rename columns of the rel_parse relation */
                        if (sql->emode != m_deps) {
                                assert(is_project(rel->op));
-                               //rel = rel_project(sql->sa, rel, 
rel_projections(sql, rel, NULL, 1, 1));
                                if (!rel)
                                        return NULL;
                                set_processed(rel);
@@ -1989,9 +1914,6 @@ rel_compare(sql_query *query, sql_rel *r
                                                        a = 
sql_bind_aggr(sql->sa, sql->session->schema, "all", exp_subtype(rs));
        
                                                rs = exp_aggr1(sql->sa, rs, a, 
0, 1, CARD_ATOM, 0);
-                                               //if (quantifier == 2 && 
(compare_op[0] == '<' || compare_op[0] == '>'))
-                                                       /* do not skip nulls in 
case of >,>=,<=,< */
-                                                       //append(rs1->l, 
exp_atom_bool(sql->sa, 0));
                                                rs = rel_groupby_add_aggr(sql, 
r, rs);
                                        } else if (r->card > CARD_ATOM) { 
                                                sql_subaggr *zero_or_one = 
sql_bind_aggr(sql->sa, sql->session->schema, compare_aggr_op(compare_op, 
quantifier), exp_subtype(rs));
@@ -2002,15 +1924,6 @@ rel_compare(sql_query *query, sql_rel *r
                                                rs = rel_groupby_add_aggr(sql, 
r, rs);
                                        }
                                }
-                               /*
-                               if (is_sql_sel(f) && r->card > CARD_ATOM && 
quantifier != 1) {
-                                       sql_subaggr *zero_or_one = 
sql_bind_aggr(sql->sa, sql->session->schema, compare_aggr_op(compare_op, 
quantifier), exp_subtype(rs));
-                                       rs = exp_aggr1(sql->sa, rs, 
zero_or_one, 0, 0, CARD_ATOM, 0);
-
-                                       r->r = rel_groupby(sql, r->r, NULL);
-                                       rs = rel_groupby_add_aggr(sql, r->r, 
rs);
-                               }
-                               */
                                if (rel) { 
                                        rel = rel_crossproduct(sql->sa, rel, r, 
(!quantifier)?op_semi:op_join);
                                        set_dependent(rel);
@@ -2045,9 +1958,6 @@ rel_compare(sql_query *query, sql_rel *r
                                                a = sql_bind_aggr(sql->sa, 
sql->session->schema, "all", exp_subtype(rs));
 
                                        rs = exp_aggr1(sql->sa, rs, a, 0, 1, 
CARD_ATOM, 0);
-                                       //if (quantifier == 2 && (compare_op[0] 
== '<' || compare_op[0] == '>'))
-                                               /* do not skip nulls in case of 
>,>=,<=,< */
-                                               //append(rs1->l, 
exp_atom_bool(sql->sa, 0));
                                        rs = rel_groupby_add_aggr(sql, r, rs);
                                } else if (r->card > CARD_ATOM) { 
                                        sql_subaggr *zero_or_one = 
sql_bind_aggr(sql->sa, sql->session->schema, compare_aggr_op(compare_op, 
quantifier), exp_subtype(rs));
@@ -2262,7 +2172,6 @@ rel_in_value_exp(sql_query *query, sql_r
 
                                exps = rel_projections(sql, left, NULL, 1/*keep 
names */, 1);
                                left = rel_add_identity(sql, left, &id);
-                               //reset_processed(left);
                                id = exp_ref(sql->sa, id);
                                left = rel_crossproduct(sql->sa, left, z, 
is_sql_sel(f)?op_left:op_join);
                                if (!l_is_value || rel_has_freevar(sql, z))
@@ -2279,19 +2188,8 @@ rel_in_value_exp(sql_query *query, sql_r
                                if (!is_sql_sel(f))
                                        set_intern(a);
                                r = rel_groupby_add_aggr(sql, left, a);
-
-                               if (is_sql_sel(f)) {
-                                       /*
-                                       if (pexps)
-                                               left = rel_project(sql->sa, 
left, pexps);
-                                               */
+                               if (is_sql_sel(f))
                                        reset_processed(left);
-#if 0
-                                       /* value exp ie no select */
-                               } else {
-                                       left = rel_select(sql->sa, left, r);
-#endif
-                               }
                                *rel = left;
                                return r;
                        }
@@ -2304,10 +2202,6 @@ rel_in_value_exp(sql_query *query, sql_r
                                query_push_outer(query, left, f);
                                r = rel_value_exp(query, &z, n->data.sym, f /* 
ie no result project */, ek);
                                left = query_pop_outer(query);
-                               /*
-                               if (z)
-                                       r = rel_lastexp(sql, z);
-                                       */
                                if (z && r) {
                                        sql_subaggr *ea = NULL;
                                        sql_exp *a, *id, *tid;
@@ -2315,7 +2209,6 @@ rel_in_value_exp(sql_query *query, sql_r
 
                                        exps = rel_projections(sql, left, NULL, 
1/*keep names */, 1);
                                        left = rel_add_identity(sql, left, &id);
-                                       //reset_processed(left);
                                        id = exp_ref(sql->sa, id);
                                        z = rel_add_identity2(sql, z, &tid);
                                        tid = exp_ref(sql->sa, tid);
@@ -2334,10 +2227,8 @@ rel_in_value_exp(sql_query *query, sql_r
                                        r = rel_groupby_add_aggr(sql, left, a);
 
                                        if (is_sql_sel(f) && pexps) {
-                                               //left = rel_project(sql->sa, 
left, pexps);
                                                reset_processed(left);
                                        } else if (!is_sql_sel(f) && 
!is_sql_having(f)){
-                                               //rel_join_add_exp(sql->sa, 
left, r);
                                                r = exp_compare(sql->sa, r, 
exp_atom_bool(sql->sa, 1), cmp_equal);
                                                if (!is_select(left->op) || 
rel_is_ref(left))
                                                        left = 
rel_select(sql->sa, left, r);
@@ -2443,7 +2334,7 @@ rel_exists_value_exp(sql_query *query, s
        exp_kind ek = {type_value, card_column, FALSE};
 
        symbol *lo = sc->data.sym;
-       sql_rel *orel = *rel, *sq = NULL, *nrel;
+       sql_rel *orel = *rel, *sq = NULL;
        list *pexps = NULL;
        int needproj = 0, exists=(sc->token == SQL_EXISTS), is_value = 
is_sql_sel(f);
        sql_exp *le;
@@ -2455,17 +2346,6 @@ rel_exists_value_exp(sql_query *query, s
        if ((!orel || (is_project(orel->op) && !is_processed(orel) && !orel->l 
&& list_empty(orel->exps))) && !query_has_outer(query))
                orel = *rel = rel_project_exp(sql->sa, exp_atom_bool(sql->sa, 
1));
        ek.card = card_set;
-       if (0 && is_value && orel && is_project(orel->op) && 
!is_processed(orel)) {
-               needproj = 1;
-               pexps = orel->exps;
-               *rel = orel->l;
-       }
-       nrel=*rel;
-       /* we need a project */
-       if (0 && is_sql_sel(f) && !is_simple_project(nrel->op)) {
-               *rel = nrel = rel_project(sql->sa, nrel, sa_list(sql->sa));
-               reset_processed(nrel);
-       }
 
        le = rel_value_exp(query, &sq, lo, f, ek);
        if (!le && sql->session->status != -ERR_AMBIGUOUS) { /* correlated */
@@ -2483,14 +2363,8 @@ rel_exists_value_exp(sql_query *query, s
                if (!sq)
                        return NULL;
 
-//             if (*rel != orel) { /* remove project */
-//                     orel->l = NULL;
-//                     rel_destroy(orel);
-//             }
-
-               //le = rel_lastexp(sql, sq);
                le = _rel_lastexp(sql, sq);
-               if (is_value /*is_sql_sel(f)*/ && is_freevar(lastexp(sq))) {
+               if (is_value && is_freevar(lastexp(sq))) {
                        sql_exp *re, *jc, *null;
 
                        re = rel_bound_exp(sql, sq);
@@ -2693,20 +2567,9 @@ rel_logical_value_exp(sql_query *query, 
                        /* correlation, ie return new relation */
                        if (!r && sql->session->status != -ERR_AMBIGUOUS) {
                                sql_rel *left = *rel;
-                               /*
-                               sql_rel *outerp = NULL;
-
-                               if (*rel && is_sql_sel(f) && 
is_project((*rel)->op) && !is_processed((*rel))) {
-                                       outerp = *rel;
-                                       *rel = (*rel)->l;
-                               }
-                               */
                                if (!*rel)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to