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