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

Rewrite anyequal to expin only if depth == 0


diffs (66 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
@@ -2519,7 +2519,7 @@ rewrite_anyequal(visitor *v, sql_rel *re
                        if (!lsq && !is_tuple && is_values(re) && 
!exps_have_rel_exp(re->f)) { /* exp_values */
                                list *vals = re->f;
 
-                               if (is_select(rel->op)) {
+                               if (depth == 0 && is_select(rel->op)) {
                                        v->changes++;
                                        return exp_in_compare(sql, &le, vals, 
is_anyequal(sf));
                                } else {
diff --git a/sql/test/SQLancer/Tests/sqlancer13.test 
b/sql/test/SQLancer/Tests/sqlancer13.test
--- a/sql/test/SQLancer/Tests/sqlancer13.test
+++ b/sql/test/SQLancer/Tests/sqlancer13.test
@@ -345,3 +345,50 @@ THEN + (3) WHEN NOT (TRUE) THEN least(5,
 
 statement ok
 ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "t0" ("c0" DOUBLE PRECISION NOT NULL,"c2" VARCHAR(64))
+
+statement ok
+INSERT INTO "t0" VALUES (-0, ''),(0.9006985362687353, 
'-698480774'),(0.48543984754620684, 'w(冒'),(3.9612322048489266, 
'8'),(0.5616282788859702, NULL),
+(3.6391771849823393, NULL),(9, NULL),(2, NULL),(0.1798248731156511, '2')
+
+statement ok
+CREATE TABLE "t1" ("c0" DOUBLE PRECISION)
+
+statement ok
+INSERT INTO "t1" VALUES 
(0.6521791858367552),(0.08122328703285808),(NULL),(0.346309674594371),(-172200039.77765536),(1)
+
+statement ok
+CREATE TABLE "t2" ("c1" DOUBLE PRECISION,"c2" BOOLEAN,"c3" BOOLEAN,CONSTRAINT 
"t2_c1_unique" UNIQUE ("c1"))
+
+statement ok
+INSERT INTO "t2" VALUES (0.7020559018817172, false, NULL),(0.6236223127320935, 
false, false),(7, true, true),(NULL, true, true)
+
+query I rowsort
+SELECT 1 FROM t0, t1 CROSS JOIN (SELECT DISTINCT t1.c0 > 4 FROM t1, t2 WHERE 
t2.c2) AS sub0
+----
+108 values hashing to ff26cf0928970b7e2ae36570fa1cf383
+
+query I rowsort
+SELECT SUM(agg0) FROM (SELECT 1 as agg0 FROM t0, t1 CROSS JOIN (SELECT 
DISTINCT t1.c0 > 4 FROM t1, t2 
+WHERE t2.c2) AS sub0 WHERE ('Bw') NOT IN (least(t0.c2, t0.c2), CAST(t1.c0 AS 
VARCHAR(64)))
+UNION ALL
+SELECT 1 as agg0 FROM t0, t1 CROSS JOIN (SELECT DISTINCT t1.c0 > 4 FROM t1, t2
+WHERE t2.c2) AS sub0 WHERE NOT (('Bw') NOT IN (least(t0.c2, t0.c2), CAST(t1.c0 
AS VARCHAR(64))))
+UNION ALL
+SELECT 1 as agg0 FROM t0, t1 CROSS JOIN (SELECT DISTINCT t1.c0 > 4 FROM t1, t2
+WHERE t2.c2) AS sub0 WHERE (('Bw') NOT IN (least(t0.c2, t0.c2), CAST(t1.c0 AS 
VARCHAR(64)))) IS NULL) as asdf
+----
+108
+
+query I rowsort
+SELECT 1 FROM t0, t1 CROSS JOIN (SELECT DISTINCT t1.c0 > 4 FROM t1, t2 WHERE 
t2.c2) AS sub0 WHERE (('Bw') NOT IN (least(t0.c2, t0.c2), CAST(t1.c0 AS 
VARCHAR(64)))) IS NULL
+----
+58 values hashing to 8fdc0683e1f7f9ff9590af46dca75282
+
+statement ok
+ROLLBACK
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to