Changeset: 6caf9e872bc1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6caf9e872bc1
Modified Files:
        sql/backends/monet5/sql_statement.c
        sql/server/rel_select.c
        sql/server/sql_mvc.h
Branch: Aug2018
Log Message:

fix problem with single value selects


diffs (54 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -1956,7 +1956,7 @@ stmt_project(backend *be, stmt *op1, stm
                s->op2 = op2;
                s->flag = cmp_project;
                s->key = 0;
-               s->nrcols = 2;
+               s->nrcols = MAX(op1->nrcols,op2->nrcols);
                s->nr = getDestVar(q);
                s->q = q;
                return s;
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
@@ -4703,7 +4703,7 @@ rel_value_exp2(mvc *sql, sql_rel **rel, 
                        e = _rel_lastexp(sql, r);
 
                        /* group by needed ? */
-                       if (e->card > CARD_ATOM && e->card > ek.card) {
+                       if (e->card >= CARD_ATOM && e->card > ek.card) {
                                int processed = is_processed(r);
                                sql_subaggr *zero_or_one = 
sql_bind_aggr(sql->sa, sql->session->schema, "zero_or_one", exp_subtype(e));
 
@@ -4874,8 +4874,11 @@ column_exp(mvc *sql, sql_rel **rel, symb
 {
        dlist *l = column_e->data.lval;
        exp_kind ek = {type_value, card_column, FALSE};
-       sql_exp *ve = rel_value_exp(sql, rel, l->h->data.sym, f, ek);
-
+       sql_exp *ve;
+
+       if (f == sql_sel && rel && *rel && (*rel)->card < CARD_AGGR)
+               ek.card = card_value;
+               ve = rel_value_exp(sql, rel, l->h->data.sym, f, ek);
        if (!ve)
                return NULL;
        /* AS name */
diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h
--- a/sql/server/sql_mvc.h
+++ b/sql/server/sql_mvc.h
@@ -29,11 +29,10 @@
 #define type_value     0
 #define type_predicate 1
 
-/* todo cleanup card_row and card_set, both seem to be not used */
 /* cardinality expected by enclosing operator */
 #define card_none      -1      /* psm call doesn't return anything */
 #define card_value     0
-#define card_row       1
+#define card_row       1 /* needed for subqueries on single value tables 
(select (select 1))*/
 #define card_column    2
 #define card_set       3 /* some operators require only a set (IN/EXISTS) */
 #define card_relation  4
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to