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