Changeset: 5b68c37a920d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5b68c37a920d
Modified Files:
        sql/server/rel_optimizer.c
Branch: Aug2011
Log Message:

fixed bug in rel_case_fixup, no longer rewrite inplace.


diffs (32 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1726,11 +1726,14 @@ exps_case_fixup( mvc *sql, list *exps, s
                        if (e->type == e_func && e->l && !is_rank_op(e) ) {
                                sql_subfunc *f = e->f;
 
-                               if (!f->func->s && !strcmp(f->func->base.name, 
"sql_div")) 
+                               if (!f->func->s && !strcmp(f->func->base.name, 
"sql_div")) {
                                        e = sql_div_fixup(sql, e, cond, lr);
-                               else 
-                                       e->l = exps_case_fixup(sql, e->l, cond, 
lr);
-
+                               } else {
+                                       list *l = exps_case_fixup(sql, e->l, 
cond, lr);
+                                       sql_exp *ne = exp_op(sql->sa, l, f);
+                                       exp_setname(sql->sa, ne, e->rname, 
e->name );
+                                       e = ne;
+                               }
                        }
                        append(nexps, e);
                }
@@ -4778,7 +4781,8 @@ _rel_optimizer(mvc *sql, sql_rel *rel, i
        /* simple merging of projects */
        if (gp.cnt[op_project]) {
                rel = rewrite(sql, rel, &rel_merge_projects, &changes);
-               rel = rewrite(sql, rel, &rel_case_fixup, &changes);
+               if (level <= 0)
+                       rel = rewrite(sql, rel, &rel_case_fixup, &changes);
        }
 
        if (gp.cnt[op_join] || 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to