Changeset: a78bfb1b086d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a78bfb1b086d
Modified Files:
        sql/server/rel_unnest.c
        sql/test/SQLancer/Tests/sqlancer14.test
Branch: default
Log Message:

List of values with 1 element are redundant


diffs (41 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -1843,6 +1843,12 @@ exp_reset_card_and_freevar_set_physical_
                e->r = NULL;
        reset_freevar(e); /* unnesting is done, we can remove the freevar flag 
*/
 
+       if (is_values(e) && list_length(exp_get_values(e))==1) { /* list of 
values with 1 element are redundant */
+               sql_exp *val = ((list*)e->f)->h->data;
+               if (exp_name(e))
+                       exp_prop_alias(v->sql->sa, val, e);
+               e = val;
+       }
        if (!(e = exp_physical_types(v, rel, e, depth))) /* for decimals and 
intervals we need to adjust the scale for some operations */
                return NULL;
        if (!rel->l)
diff --git a/sql/test/SQLancer/Tests/sqlancer14.test 
b/sql/test/SQLancer/Tests/sqlancer14.test
--- a/sql/test/SQLancer/Tests/sqlancer14.test
+++ b/sql/test/SQLancer/Tests/sqlancer14.test
@@ -342,7 +342,20 @@ statement ok
 INSERT INTO "t0" VALUES 
(0.418),(0.000),(3.109),(9.000),(0.972),(1.000),(0.442),(4.141),(8.000)
 
 query T rowsort
-SELECT (VALUES (FALSE = ALL((SELECT TRUE FROM t0) INTERSECT (SELECT TRUE FROM 
t0)))) FROM t0;
+SELECT (VALUES (FALSE = ALL(SELECT TRUE FROM t0))) FROM t0
+----
+False
+False
+False
+False
+False
+False
+False
+False
+False
+
+query T rowsort
+SELECT (VALUES (FALSE = ALL((SELECT TRUE FROM t0) INTERSECT (SELECT TRUE FROM 
t0)))) FROM t0
 ----
 False
 False
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to