Changeset: 42d8151a0e62 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/42d8151a0e62
Added Files:
        sql/test/BugTracker-2026/Tests/7867-push-groupby-down.test
Modified Files:
        sql/server/rel_optimize_proj.c
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

fixed check for group by push down (ie do the aggregate still reach the input 
arguments),
this solves issue #7867


diffs (57 lines):

diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -2195,7 +2195,7 @@ gen_push_groupby_down(mvc *sql, sql_rel 
                                list *args = ce->l;
 
                                /* check args are part of left/right */
-                               if (!list_empty(args) && rel_has_exps(cl, args, 
false) == 0)
+                               if (!list_empty(args) && rel_has_exps(cr, args, 
false) != 0)
                                        return rel;
                                if (rel->op != op_join && exp_aggr_is_count(ce))
                                        ce->p = prop_create(sql->sa, 
PROP_COUNT, ce->p);
diff --git a/sql/test/BugTracker-2026/Tests/7867-push-groupby-down.test 
b/sql/test/BugTracker-2026/Tests/7867-push-groupby-down.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/7867-push-groupby-down.test
@@ -0,0 +1,32 @@
+query I
+SELECT x
+FROM
+(
+    SELECT 1 AS x
+    UNION
+    SELECT 1
+    FROM
+       (
+               SELECT 1 AS x
+               UNION
+               SELECT 1 AS x
+       )
+       GROUP BY x
+       HAVING COUNT(*) >
+       (
+               SELECT 1
+        WHERE x IN
+               (
+                       SELECT *
+                       FROM
+                       (
+                               WITH y AS (SELECT 1)
+                               SELECT 1
+                               FROM y
+                               ORDER BY CASE WHEN x THEN x < ANY (x < (WITH z 
AS (SELECT 1) SELECT * FROM z)) END
+                       )
+               )
+       )
+) AS x
+----
+
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
@@ -61,3 +61,4 @@ KNOWNFAIL?7774-insert-into-renamed-table
 7857-rollup-crash
 KNOWNFAIL?7862-rel_has_freevar-crash
 7865-unnest-cte-crash
+7867-push-groupby-down
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to