Changeset: aa0673035900 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aa0673035900
Modified Files:
        monetdb5/mal/Tests/dynamicload.stable.err
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
Branch: embedded
Log Message:

merge with default


diffs (80 lines):

diff --git a/monetdb5/mal/Tests/dynamicload.stable.err 
b/monetdb5/mal/Tests/dynamicload.stable.err
--- a/monetdb5/mal/Tests/dynamicload.stable.err
+++ b/monetdb5/mal/Tests/dynamicload.stable.err
@@ -80,7 +80,7 @@ stderr of test 'dynamicload` in director
 # 13:21:38 >  "mclient" "-lmal" "-ftest" "-Eutf-8" 
"--host=/var/tmp/mtest-18020" "--port=37961"
 # 13:21:38 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-6360/.s.monetdb.38700
+MAPI  = (monetdb) /var/tmp/mtest-16561/.s.monetdb.38261
 QUERY = # examples of non-bindable instructions
         
         #load unknown library
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
@@ -2119,15 +2119,15 @@ rel_distinct_project2groupby(int *change
                rel->l = rel_project(sql->sa, rel->l, rel->exps);
 
                for (n = rel->exps->h; n; n = n->next) {
-                       sql_exp *e = n->data;
-
+                       sql_exp *e = n->data, *ne;
+
+                       if (!exp_name(e))
+                               exp_label(sql->sa, e, ++sql->label);
+                       ne = exp_column(sql->sa, exp_relname(e), exp_name(e), 
exp_subtype(e), exp_card(e), has_nil(e), 0);
                        if (e->card > CARD_ATOM) { /* no need to group by on 
constants */
-                               if (!exp_name(e))
-                                       exp_label(sql->sa, e, ++sql->label);
-                               e = exp_column(sql->sa, exp_relname(e), 
exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0);
-                               append(gbe, e);
+                               append(gbe, ne);
                        }
-                       append(exps, e);
+                       append(exps, ne);
                }
                rel->op = op_groupby;
                rel->exps = exps;
@@ -4580,6 +4580,8 @@ rel_groupby_distinct2(int *changes, mvc 
                        list *args = e->l;
                        sql_exp *v = args->h->data;
                        append(gbes, v);
+                       if (!exp_name(v))
+                               exp_label(sql->sa, v, ++sql->label);
                        v = exp_column(sql->sa, exp_find_rel_name(v), 
exp_name(v), exp_subtype(v), v->card, has_nil(v), is_intern(v));
                        append(aggrs, v);
                        v = exp_aggr1(sql->sa, v, e->f, need_distinct(e), 1, 
e->card, 1);
@@ -4592,6 +4594,8 @@ rel_groupby_distinct2(int *changes, mvc 
                        sql_subaggr *a = sql_bind_aggr(sql->sa, 
sql->session->schema, (cnt)?"sum":f->aggr->base.name, exp_subtype(e));
 
                        append(aggrs, e);
+                       if (!exp_name(e))
+                               exp_label(sql->sa, e, ++sql->label);
                        v = exp_column(sql->sa, exp_find_rel_name(e), 
exp_name(e), exp_subtype(e), e->card, has_nil(e), is_intern(e));
                        set_has_nil(v);
                        v = exp_aggr1(sql->sa, v, a, 0, 1, e->card, 1);
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
@@ -4147,7 +4147,6 @@ rel_value_exp2(mvc *sql, sql_rel **rel, 
                }
                if (!r && sql->session->status != -ERR_AMBIGUOUS) {
                        sql_exp *rs = NULL;
-                       int card = 0;
 
                        if (!*rel)
                                return NULL;
@@ -4157,11 +4156,10 @@ rel_value_exp2(mvc *sql, sql_rel **rel, 
                        sql->errstr[0] = '\0';
 
                        /* add unique */
-                       card = exps_card((*rel)->exps);
                        *rel = r = rel_subquery(sql, *rel, se, ek, f == 
sql_sel?APPLY_LOJ:APPLY_JOIN);
                        if (r) {
                                rs = rel_lastexp(sql, r);
-                               if (f == sql_sel && card > CARD_ATOM && r->card 
> CARD_ATOM && r->r) {
+                               if (f == sql_sel && exp_card(rs) > CARD_ATOM && 
r->card > CARD_ATOM && r->r) {
                                        sql_subaggr *zero_or_one = 
sql_bind_aggr(sql->sa, sql->session->schema, "zero_or_one", exp_subtype(rs));
                                        rs = exp_aggr1(sql->sa, rs, 
zero_or_one, 0, 0, CARD_ATOM, 0);
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to