Changeset: 5ad737dc2e27 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ad737dc2e27
Modified Files:
        sql/server/rel_select.c
Branch: default
Log Message:

Small bugfix, at rel_values, set the cardinality to the relation columns as well


diffs (43 lines):

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
@@ -763,12 +763,12 @@ rel_values(sql_query *query, symbol *tab
        sql_rel *r = NULL;
        dlist *rowlist = tableref->data.lval;
        symbol *optname = rowlist->t->data.sym;
-       dnode *o;
        node *m;
        list *exps = sa_list(sql->sa);
        exp_kind ek = {type_value, card_value, TRUE};
-
-       for (o = rowlist->h; o; o = o->next) {
+       unsigned int card = dlist_length(rowlist) == 1 ? CARD_ATOM : CARD_MULTI;
+
+       for (dnode *o = rowlist->h; o; o = o->next) {
                dlist *values = o->data.lval;
 
                /* When performing sub-queries, the relation name appears under 
a SQL_NAME symbol at the end of the list */
@@ -798,14 +798,19 @@ rel_values(sql_query *query, symbol *tab
                        }
                }
        }
-       /* loop to check types */
-       for (m = exps->h; m; m = m->next)
-               if (!(m->data = exp_values_set_supertype(sql, (sql_exp*) 
m->data, NULL)))
+       /* loop to check types and cardinality */
+       for (m = exps->h; m; m = m->next) {
+               sql_exp *e = m->data;
+
+               if (!(e = exp_values_set_supertype(sql, e, NULL)))
                        return NULL;
+               e->card = card;
+               m->data = e;
+       }
 
        r = rel_project(sql->sa, NULL, exps);
        r->nrcols = list_length(exps);
-       r->card = dlist_length(rowlist) == 1 ? CARD_ATOM : CARD_MULTI;
+       r->card = card;
        return rel_table_optname(sql, r, optname);
 }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to