Changeset: d747f540597a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d747f540597a
Added Files:
        sql/test/BugTracker-2026/Tests/7820-mergeors-reset-list.test
Modified Files:
        sql/server/rel_optimize_sel.c
        sql/test/BugTracker-2026/Tests/7818-out-of-bounds-analytics.test
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

fixed issue #7820, jump to proper next node in optimizer


diffs (98 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
@@ -743,21 +743,20 @@ merge_ors(mvc *sql, list *exps, int *cha
                        eqs = new_exp_list(sql->sa);
                        neq = new_exp_list(sql->sa);
 
-                       for(node *n = el->h; n; n = n->next) {
+                       for(node *n = el->h; n; ) {
                                sql_exp *e = n->data;
                                if (e->type == e_cmp && e->flag == cmp_con && 
!is_anti(e)) {
                                        exp_or_chain_groups(e->l, &gen_ands, 
&mce_ands, &eqs, &neq);
                                } else if (e->type == e_cmp && e->flag == 
cmp_dis && !is_anti(e)) {
-                                       node *p = el->h;
-                                       for( ; p->next != n; p = p->next)
-                                               ;
-                                       list_remove_node(el, NULL, n);
+                                       node *p = list_remove_node(el, NULL, n);
                                        list_merge(el, e->l, NULL);
                                        n = p;
+                                       continue;
                                } else {
                                        list *l = append(sa_list(sql->sa), e);
                                        exp_or_chain_groups(l, &gen_ands, 
&mce_ands, &eqs, &neq);
                                }
+                               n = n->next;
                        }
 
                        /* detect col cmp_eq exps with multiple values */
diff --git a/sql/test/BugTracker-2026/Tests/7818-out-of-bounds-analytics.test 
b/sql/test/BugTracker-2026/Tests/7818-out-of-bounds-analytics.test
--- a/sql/test/BugTracker-2026/Tests/7818-out-of-bounds-analytics.test
+++ b/sql/test/BugTracker-2026/Tests/7818-out-of-bounds-analytics.test
@@ -67,8 +67,7 @@ SELECT covar_pop (
 FROM (
     SELECT 1 AS x
     UNION SELECT 0 AS x
-    UNION SELECT DISTINCT * FROM generate_series ( CAST( 65536 AS REAL ) , 
CAST( 1.900000 AS REAL ) ) AS x
-    WHERE 625
+    UNION SELECT DISTINCT * FROM generate_series ( CAST( 100 AS REAL ) , CAST( 
1.900000 AS REAL ) ) AS x
 ) as x(x)) as x
 ----
-65536
+100
diff --git a/sql/test/BugTracker-2026/Tests/7820-mergeors-reset-list.test 
b/sql/test/BugTracker-2026/Tests/7820-mergeors-reset-list.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/7820-mergeors-reset-list.test
@@ -0,0 +1,42 @@
+query II
+select  
+  (select function_type_id from function_types limit 1 offset 1)
+     as c0, 
+  ref_0.depend_type as c1
+from 
+  dependency_functions_on_triggers as ref_0
+where (cast(coalesce(ref_0.trigger_id,
+      ref_0.trigger_table_id) as int) is NULL) 
+  and ((((ref_0.trigger_id is NULL) 
+        or ((((false) 
+              and (true)) 
+            or (false)) 
+          or ((true) 
+            and ((ref_0.trigger_table_id is NULL) 
+              or (ref_0.trigger_id is not NULL))))) 
+      or ((ref_0.trigger_name is not NULL) 
+        and (ref_0.function_schema_id is not NULL))) 
+    and ((EXISTS (
+        select  
+            ref_1.schema_name as c0, 
+            ref_0.depend_type as c1, 
+            ref_0.function_schema_id as c2, 
+            ref_1.schema_name as c3, 
+            ref_0.trigger_name as c4, 
+            ref_1.user_name as c5, 
+            ref_1.user_name as c6, 
+            ref_0.function_id as c7, 
+            ref_0.trigger_table_id as c8, 
+            ref_1.schema_name as c9, 
+            ref_1.stmt as c10, 
+            ref_1.schema_name as c11, 
+            ref_0.depend_type as c12, 
+            ref_0.depend_type as c13, 
+            ref_0.function_type as c14
+          from 
+            dump_add_schemas_to_users as ref_1
+          where false
+          limit 105)) 
+      or (ref_0.function_id is NULL)))
+limit 61
+----
diff --git a/sql/test/BugTracker-2026/Tests/All 
b/sql/test/BugTracker-2026/Tests/All
--- a/sql/test/BugTracker-2026/Tests/All
+++ b/sql/test/BugTracker-2026/Tests/All
@@ -34,3 +34,4 @@ KNOWNFAIL?7801-assertion-failure
 7815-ALGmarkselect-crash
 7816-table-returning-function-crash
 7818-out-of-bounds-analytics
+7820-mergeors-reset-list
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to