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]