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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list