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