Changeset: 6e845d6414e1 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6e845d6414e1 Modified Files: sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_schema.c Branch: Feb2013 Log Message:
fix Bug 3417 - Nested Common Table Expressions Crash (edit) properly check if a column result is a group by expression (or an aggregate) diffs (48 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -1285,6 +1285,19 @@ exps_fix_card( list *exps, int card) } } +void +exps_setcard( list *exps, int card) +{ + node *n; + + for (n = exps->h; n; n = n->next) { + sql_exp *e = n->data; + + if (e->card != CARD_ATOM) + e->card = card; + } +} + int exps_intern(list *exps) { diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -121,6 +121,7 @@ extern sql_exp *exps_bind_alias( list *e extern int exps_card( list *l ); extern void exps_fix_card( list *exps, int card); +extern void exps_setcard( list *exps, int card); extern int exps_intern(list *exps); extern char *compare_func( comp_type t ); diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -931,6 +931,10 @@ rel_create_view(mvc *sql, sql_schema *ss t = mvc_bind_table(sql, s, name); if (!persistent && column_spec) sq = view_rename_columns( sql, name, sq, column_spec); + if (sq->op == op_project && sq->l && sq->exps && sq->card == CARD_AGGR) { + exps_setcard(sq->exps, CARD_MULTI); + sq->card = CARD_MULTI; + } return sq; } return NULL; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list