Changeset: 682d044d46b4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/682d044d46b4
Modified Files:
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

fixed issue # 7985, ie added projection around qualify selection result.
Handle selection / rank op in rewrite_rank


diffs (44 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
@@ -5807,8 +5807,11 @@ rel_having_limits_nodes(sql_query *query
        }
 
        if (sn->qualify) {
+               list *exps = rel_projections(query->sql, rel, NULL, 0, 0);
                if (!(rel = rel_logical_exp(query, rel, sn->qualify, 
sql_qualify)))
                        return NULL;
+               if (!is_project(rel->op))
+                       rel = rel_project(query->sql->sa, rel, exps);
        }
 
        if (rel && sn->distinct)
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -3182,11 +3182,11 @@ rewrite_rank(visitor *v, sql_rel *rel, s
 {
        sql_rel *rell = NULL;
 
-       if (!is_simple_project(rel->op) || e->type != e_func || 
list_length(e->r) < 2 /* e->r means window function */)
+       if ((!is_simple_project(rel->op) && !is_select(rel->op)) || e->type != 
e_func || list_length(e->r) < 2 /* e->r means window function */)
                return e;
 
        (void)depth;
-       /* ranks/window functions only exist in the projection */
+       /* ranks/window functions only exist in the projection (or with qualify 
in the select) */
        list *l = e->l, *r = e->r, *gbe = r->h->data, *obe = r->h->next->data;
 
        int needed = (gbe || obe);
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
@@ -167,7 +167,7 @@ KNOWNFAIL?7980-lag-offset-ignored-bug
 7981-not-x-lt-x-bug
 KNOWNFAIL?7982-range-current-row-bug
 KNOWNFAIL?7984-exists-select-count-bug
-KNOWNFAIL?7985-qualify-row_number-over-bug
+7985-qualify-row_number-over-bug
 KNOWNFAIL?7986-right-function-bug
 KNOWNFAIL?7987-where-null-bug
 KNOWNFAIL?7989-window-avg-bug
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to