Changeset: f7b911fd8699 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f7b911fd8699 Modified Files: sql/server/rel_optimizer.c sql/test/SQLancer/Tests/sqlancer15.test Branch: Jul2021 Log Message:
rel_remove_redundant_join cannot be applied between different join types diffs (104 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -2497,7 +2497,7 @@ rel_remove_redundant_join(visitor *v, sq p = l; j = p->l; } - if (!p || !j || !is_join(j->op)) + if (!p || !j || j->op != rel->op) return rel; /* j must have b->l (ie table) */ sql_rel *jl = j->l, *jr = j->r; diff --git a/sql/test/SQLancer/Tests/sqlancer15.test b/sql/test/SQLancer/Tests/sqlancer15.test --- a/sql/test/SQLancer/Tests/sqlancer15.test +++ b/sql/test/SQLancer/Tests/sqlancer15.test @@ -507,6 +507,88 @@ statement ok START TRANSACTION statement ok +CREATE TABLE "t0" ("c0" TINYINT,"c2" BIGINT,CONSTRAINT "t0_c0_unique" UNIQUE ("c0"),CONSTRAINT "t0_c0_c2_unique" UNIQUE ("c0", "c2"),CONSTRAINT "t0_c2_c0_unique" UNIQUE ("c2", "c0")) + +statement ok rowcount 27 +COPY 27 RECORDS INTO "t0" FROM stdin USING DELIMITERS E'\t',E'\n','"' +<COPY_INTO_DATA> +1 1387424266 +2 0 +6 3634984454 +9 4 +NULL 9 +NULL 0 +NULL 611858669 +NULL 7 +3 1 +0 1317354363 +NULL 5 +NULL 0 +NULL 5 +NULL 3 +NULL 0 +NULL 8 +7 NULL +NULL 4 +NULL 7 +NULL 5 +NULL 3 +NULL 9 +NULL -10538834904 +NULL -1305419631 +NULL NULL +NULL 2 +NULL NULL + +statement ok +CREATE TABLE "t1" ("c0" DOUBLE NOT NULL,"c3" TINYINT,CONSTRAINT "t1_c0_pkey" PRIMARY KEY ("c0")) + +statement ok rowcount 21 +COPY 21 RECORDS INTO "t1" FROM stdin USING DELIMITERS E'\t',E'\n','"' +<COPY_INTO_DATA> +0.8376401275906128 NULL +0.7629541543404468 NULL +8 NULL +0.16645741874792763 NULL +124929929.23213053 8 +0.9235567828803988 3 +0.03242632919661814 8 +5.342823187177086 7 +-286476790.76211333 NULL +0.5506963799172256 NULL +4 NULL +1 NULL +-0 8 +-1.57151353e+09 8 +-0.903317038799036 NULL +0.15904894751992874 NULL +0.9264127967998556 NULL +0.7141061795496624 NULL +0.7396064226766994 NULL +0.711 NULL +0.21684918803285913 NULL + +query I rowsort +select 1 from t1 right outer join (select distinct 4*t1.c3 from t1 left outer join (select 2) as sub0 on false) as sub0 on false +---- +1 +1 +1 +1 + +query I rowsort +select cast(((true) = true) = false as int) as count from t1 right outer join (select distinct ((((4)^(-7)))*(case 611858669 when 9 then 2 when 1387424266 then t1.c3 end)) +from t1 left outer join (select cast(8 as double precision), case 8 when 4 then 0.0 when 303400756 then 0.11124314 when 0.9 then 0.3 when 1142205063 then -1571513530 end where false) as sub0 on not (true)) as sub0 on false +---- +0 + +statement ok +ROLLBACK + +statement ok +START TRANSACTION + +statement ok CREATE TABLE "t0" ("c3" INTERVAL SECOND) statement ok rowcount 9 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list