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

Reply via email to