Changeset: cf6e79382c27 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cf6e79382c27
Modified Files:
        sql/backends/monet5/sql_statement.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_rel.c
        sql/server/rel_rewriter.c
        sql/server/rel_unnest.c
        sql/server/rel_updates.c
        sql/test/SQLancer/Tests/sqlancer03.sql
        sql/test/SQLancer/Tests/sqlancer03.stable.out
Branch: oscar
Log Message:

Merged with Jun2020


diffs (truncated from 529 to 300 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -3053,7 +3053,7 @@ stmt_convert(backend *be, stmt *v, sql_s
                        q = pushInt(mb, q, f->scale);
 */                     //q = pushInt(mb, q, 
((ValRecord)((atom*)(be->mvc)->args[1])->data).val.ival);
        }
-       if (cond && v->nrcols && f->type->eclass != EC_DEC && 
!EC_TEMP_FRAC(t->type->eclass) && !EC_INTERVAL(t->type->eclass))
+       if (cond && v->nrcols && f->type->eclass != EC_DEC && 
!EC_TEMP(t->type->eclass) && !EC_INTERVAL(t->type->eclass))
                q = pushArgument(mb, q, cond->nr);
        if (q) {
                stmt *s = stmt_create(be->mvc->sa, st_convert);
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
@@ -861,6 +861,7 @@ exp_setalias(sql_exp *e, const char *rna
 void
 exp_prop_alias(sql_allocator *sa, sql_exp *e, sql_exp *oe )
 {
+       e->ref = oe->ref;
        if (oe->alias.name == NULL && exp_has_rel(oe)) {
                sql_rel *r = exp_rel_get_rel(sa, oe);
                if (!is_project(r->op))
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
@@ -1600,14 +1600,11 @@ rel_push_count_down(visitor *v, sql_rel 
                sql_rel *cp;                    /* Cross Product */
                sql_subfunc *mult;
                list *args;
-               const char *rname = NULL, *name = NULL;
                sql_rel *srel;
 
                oce = rel->exps->h->data;
                if (oce->l) /* we only handle COUNT(*) */
                        return rel;
-               rname = exp_relname(oce);
-               name  = exp_name(oce);
 
                args = new_exp_list(v->sql->sa);
                srel = r->l;
@@ -1640,7 +1637,8 @@ rel_push_count_down(visitor *v, sql_rel 
                cp = rel_crossproduct(v->sql->sa, gbl, gbr, op_join);
 
                nce = exp_op(v->sql->sa, args, mult);
-               exp_setname(v->sql->sa, nce, rname, name );
+               if (exp_name(oce))
+                       exp_prop_alias(v->sql->sa, nce, oce);
 
                rel_destroy(rel);
                rel = rel_project(v->sql->sa, cp, 
append(new_exp_list(v->sql->sa), nce));
@@ -2849,7 +2847,8 @@ rel_merge_projects(visitor *v, sql_rel *
                        }
                        */
                        if (ne) {
-                               exp_setname(v->sql->sa, ne, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(v->sql->sa, ne, e);
                                list_append(rel->exps, ne);
                        } else {
                                all = 0;
@@ -2865,7 +2864,8 @@ rel_merge_projects(visitor *v, sql_rel *
 
                                        ne = exp_push_down_prj(v->sql, e, prj, 
prj->l);
                                        if (ne) {
-                                               exp_setname(v->sql->sa, ne, 
exp_relname(e), exp_name(e));
+                                               if (exp_name(e))
+                                                       
exp_prop_alias(v->sql->sa, ne, e);
                                                list_append(nr, ne);
                                        } else {
                                                all = 0;
@@ -2934,21 +2934,25 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                        if (exp_is_atom(le) && exp_is_null(sql, le)) {
                                (*changes)++;
                                if (f && f->func && f->func->imp && 
strstr(f->func->imp, "_no_nil") != NULL) {
-                                       exp_setname(sql->sa, re, 
exp_relname(e), exp_name(e));
+                                       if (exp_name(e))
+                                               exp_prop_alias(sql->sa, re, e);
                                        return re;
                                }
                                le = exp_null(sql->sa, et);
-                               exp_setname(sql->sa, le, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, le, e);
                                return le;
                        }
                        if (exp_is_atom(re) && exp_is_null(sql, re)) {
                                (*changes)++;
                                if (f && f->func && f->func->imp && 
strstr(f->func->imp, "_no_nil") != NULL) {
-                                       exp_setname(sql->sa, le, 
exp_relname(e), exp_name(e));
+                                       if (exp_name(e))
+                                               exp_prop_alias(sql->sa, le, e);
                                        return le;
                                }
                                re = exp_null(sql->sa, et);
-                               exp_setname(sql->sa, re, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, re, e);
                                return re;
                        }
                }
@@ -2961,27 +2965,31 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                        if (exp_is_atom(le) && exp_is_zero(sql, le) && 
exp_is_atom(re) && exp_is_not_null(sql, re)) {
                                (*changes)++;
                                le = exp_zero(sql->sa, et);
-                               exp_setname(sql->sa, le, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, le, e);
                                return le;
                        }
                        /* a*0 = 0 */
                        if (exp_is_atom(re) && exp_is_zero(sql, re) && 
exp_is_atom(le) && exp_is_not_null(sql, le)) {
                                (*changes)++;
                                re = exp_zero(sql->sa, et);
-                               exp_setname(sql->sa, re, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, re, e);
                                return re;
                        }
                        /* 1*a = a
                        if (exp_is_atom(le) && exp_is_one(sql, le)) {
                                (*changes)++;
-                               exp_setname(sql->sa, re, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, re, e);
                                return re;
                        }
                        */
                        /* a*1 = a
                        if (exp_is_atom(re) && exp_is_one(sql, re)) {
                                (*changes)++;
-                               exp_setname(sql->sa, le, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, le, e);
                                return le;
                        }
                        */
@@ -2996,7 +3004,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                        if (a && atom_cast(sql->sa, a, 
exp_subtype(e))) {
                                                sql_exp *ne = exp_atom(sql->sa, 
a);
                                                (*changes)++;
-                                               exp_setname(sql->sa, ne, 
exp_relname(e), exp_name(e));
+                                               if (exp_name(e))
+                                                       exp_prop_alias(sql->sa, 
ne, e);
                                                return ne;
                                        }
                                }
@@ -3026,7 +3035,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                append(l, re);
                                (*changes)++;
                                ne = exp_op(sql->sa, l, pow);
-                               exp_setname(sql->sa, ne, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, ne, e);
                                return ne;
                        }
                        /* change a*pow(a,n) or pow(a,n)*a into pow(a,n+1) */
@@ -3040,7 +3050,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                        if (exp_equal(re, lle)==0) {
                                                if (atom_inc(exp_value(sql, 
lre, sql->args, sql->argc))) {
                                                        (*changes)++;
-                                                       exp_setname(sql->sa, 
le, exp_relname(e), exp_name(e));
+                                                       if (exp_name(e))
+                                                               
exp_prop_alias(sql->sa, le, e);
                                                        return le;
                                                }
                                        }
@@ -3075,12 +3086,14 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                        sql_exp *re = l->h->next->data;
                        if (exp_is_atom(le) && exp_is_zero(sql, le)) {
                                (*changes)++;
-                               exp_setname(sql->sa, re, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, re, e);
                                return re;
                        }
                        if (exp_is_atom(re) && exp_is_zero(sql, re)) {
                                (*changes)++;
-                               exp_setname(sql->sa, le, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, le, e);
                                return le;
                        }
                        if (exp_is_atom(le) && exp_is_atom(re)) {
@@ -3093,7 +3106,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                        if (a) {
                                                sql_exp *ne = exp_atom(sql->sa, 
a);
                                                (*changes)++;
-                                               exp_setname(sql->sa, ne, 
exp_relname(e), exp_name(e));
+                                               if (exp_name(e))
+                                                       exp_prop_alias(sql->sa, 
ne, e);
                                                return ne;
                                        }
                                }
@@ -3161,7 +3175,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                        if (a) {
                                                sql_exp *ne = exp_atom(sql->sa, 
a);
                                                (*changes)++;
-                                               exp_setname(sql->sa, ne, 
exp_relname(e), exp_name(e));
+                                               if (exp_name(e))
+                                                       exp_prop_alias(sql->sa, 
ne, e);
                                                return ne;
                                        }
                                }
@@ -3179,7 +3194,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                }
                                ne = exp_atom(sql->sa, a);
                                (*changes)++;
-                               exp_setname(sql->sa, ne, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(sql->sa, ne, e);
                                return ne;
                        }
                        if (is_func(le->type)) {
@@ -3190,7 +3206,8 @@ exp_simplify_math( mvc *sql, sql_exp *e,
                                        sql_exp *lre = ll->h->next->data;
                                        if (exp_equal(re, lre) == 0) {
                                                /* (x+a)-a = x*/
-                                               exp_setname(sql->sa, lle, 
exp_relname(e), exp_name(e));
+                                               if (exp_name(e))
+                                                       exp_prop_alias(sql->sa, 
lle, e);
                                                (*changes)++;
                                                return lle;
                                        }
@@ -3917,7 +3934,8 @@ rel_merge_project_rse(visitor *v, sql_re
                                        if (between) {
                                                sql_exp *ne = 
exp_op(v->sql->sa, ops, between);
 
-                                               exp_setname(v->sql->sa, ne, 
exp_relname(e), exp_name(e));
+                                               if (exp_name(e))
+                                                       
exp_prop_alias(v->sql->sa, ne, e);
                                                e = ne;
                                        }
                                        v->changes++;
@@ -4382,7 +4400,8 @@ rel_push_groupby_down(visitor *v, sql_re
                                        if (exp_refers(ge, a)) {
                                                sql_exp *sc = jr->exps->t->data;
                                                sql_exp *e = exp_ref(v->sql, 
sc);
-                                               exp_setname(v->sql->sa, e, 
exp_relname(a), exp_name(a));
+                                               if (exp_name(a))
+                                                       
exp_prop_alias(v->sql->sa, e, a);
                                                a = e;
                                        }
                                        append(npexps, a);
@@ -4394,7 +4413,8 @@ rel_push_groupby_down(visitor *v, sql_re
 
                                        if (exp_match_exp(a, ge) || 
exp_refers(ge, a)) {
                                                a = exp_ref(v->sql, ne);
-                                               exp_setname(v->sql->sa, a, 
exp_relname(ne), exp_name(ne));
+                                               if (exp_name(ne))
+                                                       
exp_prop_alias(v->sql->sa, a, ne);
                                                m->data = a;
                                        }
                                }
@@ -4402,12 +4422,14 @@ rel_push_groupby_down(visitor *v, sql_re
                                /* change alias pe, ie project out the index  */
                                pe->l = (void*)exp_relname(ne);
                                pe->r = (void*)exp_name(ne);
-                               exp_setname(v->sql->sa, pe, exp_relname(ne), 
exp_name(ne));
+                               if (exp_name(ne))
+                                       exp_prop_alias(v->sql->sa, pe, ne);
 
                                /* change alias ge */
                                ge->l = (void*)exp_relname(pe);
                                ge->r = (void*)exp_name(pe);
-                               exp_setname(v->sql->sa, ge, exp_relname(pe), 
exp_name(pe));
+                               if (exp_name(pe))
+                                       exp_prop_alias(v->sql->sa, ge, pe);
 
                                /* zap both project and groupby name hash 
tables (as we changed names above) */
                                rel->exps->ht = NULL;
@@ -7762,12 +7784,14 @@ rel_simplify_ifthenelse(visitor *v, sql_
 
                        if (exp_is_true(v->sql, ie)) { /* ifthenelse(true, x, 
y) -> x */
                                sql_exp *res = args->h->next->data;
-                               exp_setname(v->sql->sa, res, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(v->sql->sa, res, e);
                                v->changes++;
                                return res;
                        } else if (exp_is_false(v->sql, ie) || 
exp_is_null(v->sql, ie)) { /* ifthenelse(false or null, x, y) -> y */
                                sql_exp *res = args->h->next->next->data;
-                               exp_setname(v->sql->sa, res, exp_relname(e), 
exp_name(e));
+                               if (exp_name(e))
+                                       exp_prop_alias(v->sql->sa, res, e);
                                v->changes++;
                                return res;
                        }
@@ -8596,7 +8620,8 @@ add_nulls(mvc *sql, sql_rel *rel, sql_re
                sql_exp *e = n->data, *ne;
 
                ne = exp_atom(sql->sa, atom_general(sql->sa, exp_subtype(e), 
NULL));
-               exp_setname(sql->sa, ne, exp_relname(e), exp_name(e));
+               if (exp_name(e))
+                       exp_prop_alias(sql->sa, ne, e);
                append(rel->exps, ne);
        }
 }
@@ -8779,8 +8804,6 @@ rel_add_dicts(visitor *v, sql_rel *rel)
                                sql_rel *vt = n->data;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to