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

Reply via email to