Changeset: 9e7c6d4e336d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e7c6d4e336d
Modified Files:
        sql/server/rel_optimizer.c
        
sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
Branch: Jan2014
Log Message:

fixed problem with rel_distinct_project2groupby


diffs (240 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
@@ -1994,14 +1994,16 @@ rel_distinct_project2groupby(int *change
                node *n;
                list *exps = new_exp_list(sql->sa), *gbe = 
new_exp_list(sql->sa);
 
+               rel->l = rel_project(sql->sa, rel->l, rel->exps);
+
                for (n = rel->exps->h; n; n = n->next) {
                        sql_exp *e = n->data;
 
                        if (e->card > CARD_ATOM) { /* no need to group by on 
constants */
-                               append(gbe, e);
                                if (!exp_name(e))
                                        exp_label(sql->sa, e, ++sql->label);
                                e = exp_column(sql->sa, exp_relname(e), 
exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0);
+                               append(gbe, e);
                        }
                        append(exps, e);
                }
diff --git 
a/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
 
b/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
--- 
a/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
+++ 
b/sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
@@ -61,14 +61,18 @@ Ready.
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as L.a ]
 ) [ L.a ] [ L.a ASC ]
@@ -90,14 +94,18 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as L.a ]
 ) [ L.a ] [ L.a ASC ]
@@ -119,14 +127,18 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as L.a ]
 ) [ L.a ] [ L.a ASC ]
@@ -148,11 +160,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -171,11 +185,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -194,11 +210,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -217,11 +235,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | intersect (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -240,11 +260,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | intersect (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -263,11 +285,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | intersect (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -286,14 +310,18 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | distinct union (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | group by (
-| | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606b) [ t2606b.a ] COUNT 
+| | | ) [ t2606b.a ]
 | | ) [ t2606b.a ] [ t2606b.a ]
 | ) [ t2606a.a as t.a ]
 ) [ t.a ] [ t.a ASC ]
@@ -315,11 +343,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | except (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
@@ -338,11 +368,13 @@ project (
 % .plan # table_name
 % rel # name
 % clob # type
-% 43 # length
+% 45 # length
 project (
 | intersect (
 | | group by (
-| | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | project (
+| | | | table(sys.t2606a) [ t2606a.a ] COUNT 
+| | | ) [ t2606a.a ]
 | | ) [ t2606a.a ] [ t2606a.a ],
 | | project (
 | | | table(sys.t2606b) [ t2606b.a ] COUNT 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to