Changeset: bc157090c301 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bc157090c301
Modified Files:
        sql/server/rel_optimizer.c
        sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.err
        sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.out
Branch: Jul2015
Log Message:

fixed many_union_all bug 3879


diffs (59 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
@@ -4194,6 +4194,8 @@ rel_push_project_down_union(int *changes
                if (need_distinct)
                        set_distinct(rel);
                (*changes)++;
+               rel->l = rel_merge_projects(changes, sql, rel->l);
+               rel->r = rel_merge_projects(changes, sql, rel->r);
                return rel;
        }
        return rel;
@@ -7646,13 +7648,8 @@ static sql_rel *
        if (gp.cnt[op_select] || gp.cnt[op_join])
                rel = rewrite(sql, rel, &rel_use_index, &changes); 
 
-       if (gp.cnt[op_project]) {
-               int lchanges = 0;
-               rel = rewrite_topdown(sql, rel, &rel_push_project_down_union, 
&lchanges);
-               if (lchanges)
-                       rel = rewrite(sql, rel, &rel_merge_projects, &lchanges);
-               changes += lchanges;
-       }
+       if (gp.cnt[op_project]) 
+               rel = rewrite_topdown(sql, rel, &rel_push_project_down_union, 
&changes);
 
        /* Remove unused expressions */
        if (level <= 0)
diff --git a/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.err 
b/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.err
--- a/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.err
+++ b/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.err
@@ -1,4 +1,4 @@
-stderr of test 'many_union_all.Bug-3897` in directory 
'sql/test/BugTracker-2015` itself:
+stderr of test 'many_union_all.Bug-3879` in directory 
'sql/test/BugTracker-2015` itself:
 
 
 # 16:32:11 >  
diff --git a/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.out 
b/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.out
--- a/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.out
+++ b/sql/test/BugTracker-2015/Tests/many_union_all.Bug-3879.stable.out
@@ -1,4 +1,4 @@
-stdout of test 'many_union_all.Bug-3897` in directory 
'sql/test/BugTracker-2015` itself:
+stdout of test 'many_union_all.Bug-3879` in directory 
'sql/test/BugTracker-2015` itself:
 
 
 # 16:32:11 >  
@@ -147,10 +147,11 @@ Ready.
 % a # name
 % int # type
 % 1 # length
-[ 0    ]
 [ 3    ]
 [ 6    ]
 [ 7    ]
+[ 0    ]
+#DROP TABLE foo;
 #ROLLBACK;
 
 # 16:32:11 >  
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to