Changeset: 77ec5b7e0d23 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/77ec5b7e0d23
Modified Files:
        sql/server/rel_optimize_sel.c
        sql/test/rel-optimizers/Tests/merge-ors-multi-col-eq-to-cmp_in.test
Branch: Dec2025
Log Message:

Deactivates multi-column compare equality or-merge optimizer


diffs (156 lines):

diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -656,10 +656,12 @@ exp_or_chain_groups(list *exps, list **g
     }
 
        if (list_length(exps) > 1) {
-               if (eq_only)
-                       *mce_ands = append(*mce_ands, exps);
-               else
-                       *gen_ands = append(*gen_ands, exps);
+               /*if (eq_only)*/
+                       /**mce_ands = append(*mce_ands, exps);*/
+               /*else*/
+                       /**gen_ands = append(*gen_ands, exps);*/
+               (void) mce_ands;
+               *gen_ands = append(*gen_ands, exps);
        } else if (list_length(exps) == 1) {
                sql_exp *se = exps->h->data;
 
diff --git 
a/sql/test/rel-optimizers/Tests/merge-ors-multi-col-eq-to-cmp_in.test 
b/sql/test/rel-optimizers/Tests/merge-ors-multi-col-eq-to-cmp_in.test
--- a/sql/test/rel-optimizers/Tests/merge-ors-multi-col-eq-to-cmp_in.test
+++ b/sql/test/rel-optimizers/Tests/merge-ors-multi-col-eq-to-cmp_in.test
@@ -11,13 +11,13 @@ 9
 180
 1800
 
-query T nosort non-eq-two-col-2-value
+query T nosort
 explain show details select * from b where n > 3 or (m = 20 and k = 200) or (m 
= 60 and k = 600)
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) > (int(4) 
"3")) ]
+| ) [ (("b"."n" NOT NULL) > (int(4) "3")) or ((("b"."m" NOT NULL) = (int(8) 
"20"), ("b"."k" NOT NULL) = (int(11) "200")) or (("b"."m" NOT NULL) = (int(8) 
"60"), ("b"."k" NOT NULL) = (int(11) "600"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 query III nosort
@@ -39,35 +39,35 @@ explain show details select * from b whe
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) > (int(4) 
"3"), .AND(("b"."m" NOT NULL) = (int(8) "180"), ("b"."k" NOT NULL) = (int(11) 
"1800"))) ]
+| ) [ (("b"."n" NOT NULL) > (int(4) "3"), .AND(("b"."m" NOT NULL) = (int(8) 
"180"), ("b"."k" NOT NULL) = (int(11) "1800"))) or ((("b"."m" NOT NULL) = 
(int(8) "20"), ("b"."k" NOT NULL) = (int(11) "200")) or (("b"."m" NOT NULL) = 
(int(8) "60"), ("b"."k" NOT NULL) = (int(11) "600"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
-query T nosort non-eq-two-col-2-value
+query T nosort
 explain show details select * from b where (m = 20 and k = 200) or n > 3 or (m 
= 60 and k = 600)
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) > (int(4) 
"3")) ]
+| ) [ (("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) 
"200")) or ((("b"."n" NOT NULL) > (int(4) "3")) or (("b"."m" NOT NULL) = 
(int(8) "60"), ("b"."k" NOT NULL) = (int(11) "600"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 # order of m,k equality statements are swapped in the last AND expression
-query T nosort non-eq-two-col-2-value
+query T nosort
 explain show details select * from b where (m = 20 and k = 200) or n > 3 or (k 
= 600 and m = 60)
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) > (int(4) 
"3")) ]
+| ) [ (("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) 
"200")) or ((("b"."n" NOT NULL) > (int(4) "3")) or (("b"."k" NOT NULL) = 
(int(11) "600"), ("b"."m" NOT NULL) = (int(8) "60"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
-query T nosort non-eq-two-col-2-value
+query T nosort
 explain show details select * from b where (m = 20 and k = 200) or (m = 60 and 
k = 600) or n > 3
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) > (int(4) 
"3")) ]
+| ) [ (("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) 
"200")) or ((("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) 
"600")) or (("b"."n" NOT NULL) > (int(4) "3"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 query III rowsort
@@ -86,25 +86,25 @@ explain show details select * from b whe
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) = (int(4) 
"1"), ("b"."m" NOT NULL) = (int(8) "20")) ]
+| ) [ (("b"."n" NOT NULL) = (int(4) "1"), ("b"."m" NOT NULL) = (int(8) "20")) 
or ((("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) "200")) 
or (("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) "600"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
-query T nosort two-col-1-value-two-col-2-value
+query T nosort
 explain show details select * from b where (m = 20 and k = 200) or (n = 1 and 
m = 20) or (m = 60 and k = 600)
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) = (int(4) 
"1"), ("b"."m" NOT NULL) = (int(8) "20")) ]
+| ) [ (("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) 
"200")) or ((("b"."n" NOT NULL) = (int(4) "1"), ("b"."m" NOT NULL) = (int(8) 
"20")) or (("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) 
"600"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
-query T nosort two-col-1-value-two-col-2-value
+query T nosort
 explain show details select * from b where (m = 20 and k = 200) or (m = 60 and 
k = 600) or (n = 1 and m = 20)
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."n" NOT NULL) = (int(4) 
"1"), ("b"."m" NOT NULL) = (int(8) "20")) ]
+| ) [ (("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) 
"200")) or ((("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) 
"600")) or (("b"."n" NOT NULL) = (int(4) "1"), ("b"."m" NOT NULL) = (int(8) 
"20"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 query III rowsort
@@ -127,7 +127,7 @@ explain show details select * from b whe
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) 
"200" ],  [ int(8) "60", int(11) "600" ])) or (("b"."m" NOT NULL) = (int(8) 
"40"), ("b"."k" NOT NULL) > (int(11) "0")) ]
+| ) [ (("b"."m" NOT NULL) = (int(8) "40"), ("b"."k" NOT NULL) > (int(11) "0")) 
or ((("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) "200")) 
or (("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) "600"))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 onlyif threads=1
@@ -155,17 +155,17 @@ 60
 600
 
 skipif threads=1
-query T nosort single-col-3-val-2-col-2-val
+query T nosort single_col_3_val_2_col_2_val
 explain show details select m, k from b where (m = 40) or (m = 20 and k = 200) 
or (m = 0) or (m = 60 and k = 600) or (m = 180)
 ----
 project (
 | select (
 | | table("sys"."b") [ "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (("b"."m" NOT NULL) in (int(8) "40", int(8) "0", int(8) "180")) or (( [ 
"b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ int(8) "20", int(11) "200" ],  [ 
int(8) "60", int(11) "600" ])) ]
+| ) [ (("b"."m" NOT NULL) in (int(8) "40", int(8) "0", int(8) "180")) or 
((("b"."m" NOT NULL) = (int(8) "20"), ("b"."k" NOT NULL) = (int(11) "200")) or 
(("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) "600"))) ]
 ) [ "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 onlyif threads=1
-query T nosort single-col-3-val-2-col-2-val
+query T nosort single_col_3_val_2_col_2_val
 explain show details select m, k from b where (m = 40) or (m = 20 and k = 200) 
or (m = 0) or (m = 60 and k = 600) or (m = 180)
 ----
 project (
@@ -215,10 +215,11 @@ explain show details select * from b whe
 project (
 | select (
 | | table("sys"."b") [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
-| ) [ (( [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]) in ( [ 
int(4) "2", int(8) "40", int(11) "400" ],  [ int(4) "3", int(8) "60", int(11) 
"600" ])) or (( [ "b"."n" NOT NULL, "b"."m" NOT NULL ]) in ( [ int(4) "1", 
int(8) "20" ],  [ int(4) "9", int(8) "180" ])) ]
+| ) [ (("b"."n" NOT NULL) = (int(4) "1"), ("b"."m" NOT NULL) = (int(8) "20")) 
or ((("b"."n" NOT NULL) = (int(4) "2"), ("b"."m" NOT NULL) = (int(8) "40"), 
("b"."k" NOT NULL) = (int(11) "400")) or ((("b"."n" NOT NULL) = (int(4) "9"), 
("b"."m" NOT NULL) = (int(8) "180")) or (("b"."n" NOT NULL) = (int(4) "3"), 
("b"."m" NOT NULL) = (int(8) "60"), ("b"."k" NOT NULL) = (int(11) "600")))) ]
 ) [ "b"."n" NOT NULL, "b"."m" NOT NULL, "b"."k" NOT NULL ]
 
 query I rowsort
 select sum(k) from dupv where ((n = 2) AND (m = 40)) OR ((n = 1) AND (m = 20) 
AND (k=200))
 ----
 500
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to