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 -- [email protected]
To unsubscribe send an email to [email protected]