Changeset: cdea023ff7f2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cdea023ff7f2
Modified Files:
monetdb5/mal/Tests/dynamicload.stable.err
sql/server/rel_optimizer.c
sql/server/rel_select.c
Branch: k3match
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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list