Changeset: 1925d8269808 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1925d8269808
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_unnest.c
Branch: Mar2025
Log Message:

fixed issue with rank functions and select push down


diffs (39 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -4781,6 +4781,8 @@ rel2bin_project(backend *be, sql_rel *re
                }
 
                limit = lpiv;
+               if (!limit) /* partition/order by cols fully overlap */
+                       limit = stmt_limit(be, pl->h->data, NULL, grp, 
stmt_atom_lng(be, 0), l, 0,0,0,0,1);
                if (limit && grp)
                        limit = stmt_project(be, stmt_selectnonil(be, limit, 
NULL), limit);
                stmt *s;
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
@@ -2848,17 +2848,18 @@ rewrite_rank(visitor *v, sql_rel *rel, s
        if (gbe || obe) {
                int gbeoffset = list_length(gbe), i = 0, added = 0;
                int *pos = SA_NEW_ARRAY(v->sql->ta, int, gbeoffset + 
list_length(obe));
-               if (gbe)
+               if (gbe) {
                        for (i = 0 ; i < gbeoffset ; i++)
                                pos[i] = i;
+                       for(node *n = gbe->h ; n ; n = n->next) {
+                               sql_exp *e = n->data;
+                               set_partitioning(e);
+                       }
+               }
 
                if (gbe && obe) {
                        gbe = list_merge(sa_list(v->sql->sa), gbe, (fdup)NULL); 
/* make sure the p->r is a different list than the gbe list */
                        i = 0;
-                       for(node *n = gbe->h ; n ; n = n->next) {
-                               sql_exp *e = n->data;
-                               set_partitioning(e);
-                       }
                        for(node *n = obe->h ; n ; n = n->next, i++) {
                                sql_exp *e1 = n->data;
                                bool found = false;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to