Changeset: 587a1e6b3e4d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/587a1e6b3e4d Modified Files: sql/server/rel_dump.c sql/server/rel_optimize_proj.c sql/server/rel_select.c sql/server/rel_statistics.c Branch: balanced_union Log Message:
Leftovers from merge with default diffs (66 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -532,7 +532,7 @@ rel_print_rel(mvc *sql, stream *fout, s } print_indent(sql, fout, depth, decorate); mnstr_printf(fout, ")"); - exps_print(sql, fout, rel->exps, depth, refs, 1, 0); + exps_print(sql, fout, rel->exps, depth, refs, 1, 0, decorate); break; case op_project: case op_select: diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -2149,7 +2149,7 @@ rel_push_aggr_down_n_arry(visitor *v, sq if (oa->type == e_aggr) { sql_subfunc *f = oa->f; int cnt = exp_aggr_is_count(oa); - sql_subfunc *a = sql_bind_func(v->sql, "sys", (cnt)?"sum":f->func->base.name, exp_subtype(e), NULL, F_AGGR, true); + sql_subfunc *a = sql_bind_func(v->sql, "sys", (cnt)?"sum":f->func->base.name, exp_subtype(e), NULL, F_AGGR, true, true); assert(a); /* munion of aggr result may have nils 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 @@ -5764,7 +5764,7 @@ rel_setquery_(sql_query *query, sql_rel /* Generate n-ary set operator */ static sql_rel * -rel_setquery_n_ary_(sql_query *query, sql_rel *l, sql_rel *r, dlist *cols, int op) +rel_setquery_n_ary_(sql_query *query, sql_rel *l, sql_rel *r, dlist *cols, int op, int outer) { /* even though this is for a general n-ary operators in this phase of the query * processing we gonna have only two operands (so technically it's binary). In @@ -5776,6 +5776,8 @@ rel_setquery_n_ary_(sql_query *query, sq mvc *sql = query->sql; sql_rel *rel; + if (outer && !cols) + return sql_error(sql, 02, SQLSTATE(42000) "UNION: OUTER needs to be combined with CORRESPONDING [ BY ( column list ) ]"); if (!cols) { // TODO: make rel_setop_n_ary_check_types to accept a list of rels // and a list of lists of exps @@ -5846,7 +5848,7 @@ rel_setquery(sql_query *query, symbol *q t2 = rel_distinct(t2); // TODO: this has to be fixed /*res = rel_setquery_(query, t1, t2, corresponding, op_union, outer);*/ - res = rel_setquery_n_ary_(query, t1, t2, corresponding, op_munion); + res = rel_setquery_n_ary_(query, t1, t2, corresponding, op_munion, outer); } else if ( q->token == SQL_EXCEPT) res = rel_setquery_(query, t1, t2, corresponding, op_except, 0); else if ( q->token == SQL_INTERSECT) diff --git a/sql/server/rel_statistics.c b/sql/server/rel_statistics.c --- a/sql/server/rel_statistics.c +++ b/sql/server/rel_statistics.c @@ -922,7 +922,7 @@ rel_get_statistics_(visitor *v, sql_rel } else if (list_empty(nl)) { /* empty select (project [ nils ] ) */ for (node *n = rel->exps->h ; n ; n = n->next) { - sql_exp *e = n->data, *a = exp_atom(v->sql->sa, atom_general(v->sql->sa, exp_subtype(e), NULL)); + sql_exp *e = n->data, *a = exp_atom(v->sql->sa, atom_general(v->sql->sa, exp_subtype(e), NULL, 0)); exp_prop_alias(v->sql->sa, a, e); n->data = a; } _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org