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

Reply via email to