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]