Changeset: ddfb1de0af03 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ddfb1de0af03
Modified Files:
        sql/server/rel_rel.c
        sql/server/rel_select.c
Branch: default
Log Message:

Correctly apply aliasing for LIMIT in subqueries.


diffs (35 lines):

diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -274,7 +274,8 @@ rel_bind_column2( mvc *sql, sql_rel *rel
                   is_sort(rel) ||
                   is_semi(rel->op) ||
                   is_apply(rel->op) ||
-                  is_select(rel->op)) {
+                  is_select(rel->op) || 
+                  is_topn(rel->op)) {
                if (rel->l)
                        return rel_bind_column2(sql, rel->l, tname, cname, f);
        }
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
@@ -227,8 +227,16 @@ rel_table_optname(mvc *sql, sql_rel *sq,
                        }
                }
                if (!columnrefs && sq->exps) {
-                       node *ne = sq->exps->h;
-
+                       node *ne;
+                       if (is_topn(sq->op)) {
+                               // if the current node is a LIMIT statement
+                               // we perform the alias on the underlying 
projection
+                               assert(sq->l);
+                               assert(is_project(((sql_rel*)sq->l)->op));
+                               ne = ((sql_rel*)sq->l)->exps->h;
+                       } else {
+                               ne = sq->exps->h;
+                       }
                        for (; ne; ne = ne->next) {
                                sql_exp *e = ne->data;
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to