Changeset: 50d66f77ffa5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/50d66f77ffa5
Modified Files:
        sql/backends/monet5/rel_tvtree.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/test/nested/Tests/basic.test
Branch: nested
Log Message:

small revert, ie single value inserts are kept as single atoms.
tvtree handles this now.


diffs (65 lines):

diff --git a/sql/backends/monet5/rel_tvtree.c b/sql/backends/monet5/rel_tvtree.c
--- a/sql/backends/monet5/rel_tvtree.c
+++ b/sql/backends/monet5/rel_tvtree.c
@@ -251,8 +251,11 @@ tv_parse_values_(backend *be, tv_tree *t
                        break;
                case TV_MSET:
                case TV_SETOF:
-                       assert(is_convert(value->type));
-                       uc = value->l;
+                       //assert(is_convert(value->type));
+                       assert(value->f);
+                       uc = value;
+                       if (is_convert(value->type))
+                               uc = value->l;
                        if (!uc->f)
                        /* VALUES ('{1, 2, 3}') */
                 return mset_value_from_literal(be, t, value, left, sel);
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
@@ -759,9 +759,7 @@ rel_unnest_func(sql_query *query, list *
                if (!e->freevar || e->type != e_column) {
                        if ((e = exp_check_multiset(query->sql, e)) == NULL)
                                return sql_error(query->sql, ERR_NOTFOUND, 
SQLSTATE(42000) "SELECT: unnest multiset not found");
-                       sql_exp *vals = exp_values(query->sql->sa, 
sa_list(query->sql->sa));
-                       append(vals->f, e);
-                       sql_rel *rp = rel_project(query->sql->sa, NULL, 
append(sa_list(query->sql->sa), vals));
+                       sql_rel *rp = rel_project(query->sql->sa, NULL, 
append(sa_list(query->sql->sa), e));
                        rp->card = CARD_MULTI;
                        sql_exp *el = exps_bind_column(e->f, "elements", NULL, 
NULL, 1);
                        return rel_project(query->sql->sa, rp, 
append(sa_list(query->sql->sa), exp_ref(query->sql, el)));
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -430,7 +430,7 @@ rel_inserts(mvc *sql, sql_table *t, sql_
                                }
                                if (!e)
                                        return sql_error(sql, 02, 
SQLSTATE(42000) "%s: column '%s' has no valid default value", action, 
c->base.name);
-                               if (!exps) {
+                               if (!exps && (j+1) < rowcount) {
                                        exps = exp_values(sql->sa, 
sa_list(sql->sa));
                                        exps->tpe = c->type;
                                        exp_label(sql->sa, exps, ++sql->label);
@@ -608,7 +608,7 @@ insert_generate_inserts(sql_query *query
                                dnode *n;
                                node *v, *m;
 
-                               if (list_empty(exps)) { /* allways create an 
atom list, also for single atoms */
+                               if (o->next && list_empty(exps)) { /* allways 
create an atom list, also for single atoms */
                                        for (n = values->h, m = collist->h; n 
&& m; n = n->next, m = m->next) {
                                                sql_exp *vals = 
exp_values(sql->sa, sa_list(sql->sa));
                                                sql_column *c = m->data;
diff --git a/sql/test/nested/Tests/basic.test b/sql/test/nested/Tests/basic.test
--- a/sql/test/nested/Tests/basic.test
+++ b/sql/test/nested/Tests/basic.test
@@ -38,3 +38,9 @@ select f1, avg(f.elements) from arr_tbl,
 2
 {2,3,4}
 3
+
+query I nosort
+select a from unnest(Array[1,2]) a(a);
+----
+1
+2
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to