Changeset: d937ed8a0629 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d937ed8a0629
Modified Files:
sql/server/rel_select.c
sql/test/BugTracker-2025/Tests/7737-join-order.test
Branch: Mar2025
Log Message:
#7751 Pushes NOT down cmp_in/cmp_notin asap
diffs (38 lines):
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2971,7 +2971,13 @@ rel_logical_exp(sql_query *query, sql_re
sql_find_subtype(&bt, "boolean", 0, 0);
if (!le || !(le = exp_check_type(sql, &bt, rel, le,
type_equal)))
return NULL;
- le = exp_compare(sql->sa, le, exp_atom_bool(sql->sa, 0),
cmp_equal);
+ /* in case of cmp_in/cmp_notin push NOT down */
+ if (le->flag == cmp_in)
+ le->flag = cmp_notin;
+ else if (le->flag == cmp_notin)
+ le->flag = cmp_in;
+ else
+ le = exp_compare(sql->sa, le, exp_atom_bool(sql->sa,
0), cmp_equal);
return rel_select_push_compare_exp_down(sql, rel, le, le->l,
le->r, NULL, f);
}
case SQL_ATOM: {
diff --git a/sql/test/BugTracker-2025/Tests/7737-join-order.test
b/sql/test/BugTracker-2025/Tests/7737-join-order.test
--- a/sql/test/BugTracker-2025/Tests/7737-join-order.test
+++ b/sql/test/BugTracker-2025/Tests/7737-join-order.test
@@ -26,13 +26,14 @@ end
statement ok
call test_populate()
-query T python .plan.filter
+query T python .plan.filter
plan select count(*) from test_base where item is null or not(item in
('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'))
----
project (
| group by (
| | select (
| | | table("sys"."test_base") [ "test_base"."item" NOT NULL ]
-| | ) [ (("test_base"."item" NOT NULL) in (varchar(10) "a", varchar(10) "b",
varchar(10) "c", varchar(10) "d", varchar(10) "e", varchar(10) "f", varchar(10)
"g", varchar(10) "h", varchar(10) "i", varchar(10) "j", varchar(10) "k",
varchar(10) "l", varchar(10) "m", varchar(10) "n", varchar(10) "o", varchar(10)
"p", varchar(10) "q", varchar(10) "r", varchar(10) "s", varchar(10) "t",
varchar(10) "u", varchar(10) "v", varchar(10) "w", varchar(10) "x", varchar(10)
"y", varchar(10) "z")) = (boolean(1) "false") ]
+| | ) [ ("test_base"."item" NOT NULL) notin (varchar(10) "a", varchar(10) "b",
varchar(10) "c", varchar(10) "d", varchar(10) "e", varchar(10) "f", varchar(10)
"g", varchar(10) "h", varchar(10) "i", varchar(10) "j", varchar(10) "k",
varchar(10) "l", varchar(10) "m", varchar(10) "n", varchar(10) "o", varchar(10)
"p", varchar(10) "q", varchar(10) "r", varchar(10) "s", varchar(10) "t",
varchar(10) "u", varchar(10) "v", varchar(10) "w", varchar(10) "x", varchar(10)
"y", varchar(10) "z") ]
| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%2"."%2" ]
) [ "%2"."%2" NOT NULL UNIQUE ]
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]