summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpshi2012-02-23 21:54:13 (EST)
committer mwu2012-02-23 21:54:13 (EST)
commited2b8cf571c6b0a9a26f7e6f1ee5dd674b623f4f (patch)
tree0a15026bf4af80a9bef4a4905734e4b071d30935
parent4ea0f36443115886151a1c6d136ad49c38c1dae9 (diff)
downloadorg.eclipse.birt-ed2b8cf571c6b0a9a26f7e6f1ee5dd674b623f4f.zip
org.eclipse.birt-ed2b8cf571c6b0a9a26f7e6f1ee5dd674b623f4f.tar.gz
org.eclipse.birt-ed2b8cf571c6b0a9a26f7e6f1ee5dd674b623f4f.tar.bz2
add unit test for Ted 47799, support row sort on aggregation bindings
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/AggregationTest.java376
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test10.txt26
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test5.txt52
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test6.txt26
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test7.txt26
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test8.txt26
-rw-r--r--data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test9.txt12
7 files changed, 518 insertions, 26 deletions
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/AggregationTest.java b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/AggregationTest.java
index 7933603..3e60bb7 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/AggregationTest.java
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/AggregationTest.java
@@ -14,11 +14,16 @@
package org.eclipse.birt.data.engine.impl;
+import org.eclipse.birt.data.aggregation.api.IBuildInAggregation;
import org.eclipse.birt.data.engine.api.APITestCase;
+import org.eclipse.birt.data.engine.api.IBinding;
+import org.eclipse.birt.data.engine.api.IConditionalExpression;
import org.eclipse.birt.data.engine.api.IPreparedQuery;
import org.eclipse.birt.data.engine.api.IQueryResults;
import org.eclipse.birt.data.engine.api.IResultIterator;
import org.eclipse.birt.data.engine.api.ISortDefinition;
+import org.eclipse.birt.data.engine.api.querydefn.Binding;
+import org.eclipse.birt.data.engine.api.querydefn.ConditionalExpression;
import org.eclipse.birt.data.engine.api.querydefn.FilterDefinition;
import org.eclipse.birt.data.engine.api.querydefn.GroupDefinition;
import org.eclipse.birt.data.engine.api.querydefn.QueryDefinition;
@@ -422,6 +427,377 @@ public class AggregationTest extends APITestCase
assertTrue( ae1.getRegId( ) != ae5.getRegId( ) );
}
+ /**
+ * test sort on aggregation bindings add a aggregation binding, then sort it
+ *
+ * @throws Exception
+ */
+ public void test5( ) throws Exception
+ {
+ QueryDefinition query = newReportQuery( );
+
+ ScriptExpression e1 = new ScriptExpression( "dataSetRow.CITY" );
+ query.addResultSetExpression( "e1", e1 );
+
+ ScriptExpression e2 = new ScriptExpression( "dataSetRow.STORE" );
+ query.addResultSetExpression( "e2", e2 );
+
+ ScriptExpression e3 = new ScriptExpression( "dataSetRow.SALE_DATE" );
+ query.addResultSetExpression( "e3", e3 );
+
+ ScriptExpression e4 = new ScriptExpression( "dataSetRow.SKU" );
+ query.addResultSetExpression( "e4", e4 );
+
+ ScriptExpression e10 = new ScriptExpression( "dataSetRow.PRICE" );
+ query.addResultSetExpression( "e10", e10 );
+
+ ScriptExpression e11 = new ScriptExpression( "dataSetRow.QUANTITY" );
+ query.addResultSetExpression( "e11", e11 );
+
+ // grouping levels: CITY
+ GroupDefinition g1 = new GroupDefinition( "G1" );
+ g1.setKeyExpression( "dataSetRow.CITY" );
+ query.addGroup( g1 );
+
+ IBinding aggr1 = new Binding( "Rank",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr1.setAggrFunction( "RANK" );
+ aggr1.addAggregateOn( "G1" );
+ query.addBinding( aggr1 );
+
+ SortDefinition sort = new SortDefinition( );
+ sort.setExpression( "row[\"Rank\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ String[] exprs = new String[]{
+ "e1", "e2", "e3", "e4", "e10", "e11", "Rank"
+ };
+
+ outputQueryResult( executeQuery( query ), exprs );
+ checkOutputFile( );
+ }
+
+ /**
+ * test sort on aggregation bindings add tow aggregation bingdings, then
+ * sort it
+ *
+ * @throws Exception
+ */
+ public void test6( ) throws Exception
+ {
+ QueryDefinition query = newReportQuery( );
+
+ ScriptExpression e1 = new ScriptExpression( "dataSetRow.CITY" );
+ query.addResultSetExpression( "e1", e1 );
+
+ ScriptExpression e2 = new ScriptExpression( "dataSetRow.STORE" );
+ query.addResultSetExpression( "e2", e2 );
+
+ ScriptExpression e3 = new ScriptExpression( "dataSetRow.SALE_DATE" );
+ query.addResultSetExpression( "e3", e3 );
+
+ ScriptExpression e4 = new ScriptExpression( "dataSetRow.SKU" );
+ query.addResultSetExpression( "e4", e4 );
+
+ ScriptExpression e10 = new ScriptExpression( "dataSetRow.PRICE" );
+ query.addResultSetExpression( "e10", e10 );
+
+ ScriptExpression e11 = new ScriptExpression( "dataSetRow.QUANTITY" );
+ query.addResultSetExpression( "e11", e11 );
+
+ // grouping levels: CITY
+ GroupDefinition g1 = new GroupDefinition( "G1" );
+ g1.setKeyExpression( "dataSetRow.CITY" );
+ query.addGroup( g1 );
+
+ // grouping levels: store
+ GroupDefinition g2 = new GroupDefinition( "G2" );
+ g2.setKeyExpression( "dataSetRow.STORE" );
+ query.addGroup( g2 );
+
+ IBinding aggr1 = new Binding( "Rank",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr1.setAggrFunction( "RANK" );
+ aggr1.addAggregateOn( "G1" );
+ query.addBinding( aggr1 );
+
+ SortDefinition sort = new SortDefinition( );
+ sort.setExpression( "row[\"Rank\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ IBinding aggr2 = new Binding( "Runningsum",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr2.setAggrFunction( IBuildInAggregation.TOTAL_RUNNINGSUM_FUNC );
+ aggr2.addAggregateOn( "G2" );
+ query.addBinding( aggr2 );
+
+ sort = new SortDefinition( );
+ sort.setExpression( "row[\"Runningsum\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ String[] exprs = new String[]{
+ "e1", "e2", "e3", "e4", "e10", "e11", "Rank", "Runningsum"
+ };
+
+ outputQueryResult( executeQuery( query ), exprs );
+ checkOutputFile( );
+ }
+
+ /**
+ * test sort on aggregation bindings add a binding, which use aggregation
+ * bindings.
+ *
+ * @throws Exception
+ */
+ public void test7( ) throws Exception
+ {
+ QueryDefinition query = newReportQuery( );
+
+ ScriptExpression e1 = new ScriptExpression( "dataSetRow.CITY" );
+ query.addResultSetExpression( "e1", e1 );
+
+ ScriptExpression e2 = new ScriptExpression( "dataSetRow.STORE" );
+ query.addResultSetExpression( "e2", e2 );
+
+ ScriptExpression e3 = new ScriptExpression( "dataSetRow.SALE_DATE" );
+ query.addResultSetExpression( "e3", e3 );
+
+ ScriptExpression e4 = new ScriptExpression( "dataSetRow.SKU" );
+ query.addResultSetExpression( "e4", e4 );
+
+ ScriptExpression e10 = new ScriptExpression( "dataSetRow.PRICE" );
+ query.addResultSetExpression( "e10", e10 );
+
+ ScriptExpression e11 = new ScriptExpression( "dataSetRow.QUANTITY" );
+ query.addResultSetExpression( "e11", e11 );
+
+ // grouping levels: CITY
+ GroupDefinition g1 = new GroupDefinition( "G1" );
+ g1.setKeyExpression( "dataSetRow.CITY" );
+ query.addGroup( g1 );
+
+ // grouping levels: store
+ GroupDefinition g2 = new GroupDefinition( "G2" );
+ g2.setKeyExpression( "dataSetRow.STORE" );
+ query.addGroup( g2 );
+
+ IBinding aggr2 = new Binding( "Runningsum",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr2.setAggrFunction( IBuildInAggregation.TOTAL_RUNNINGSUM_FUNC );
+ aggr2.addAggregateOn( "G2" );
+ query.addBinding( aggr2 );
+
+ IBinding binding1 = new Binding( "sqrtSum",
+ new ScriptExpression( "Math.sqrt(row[\"Runningsum\"])" ) );
+ query.addBinding( binding1 );
+
+ SortDefinition sort = new SortDefinition( );
+ sort.setExpression( "row[\"sqrtSum\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ String[] exprs = new String[]{
+ "e1", "e2", "e3", "e4", "e10", "e11", "sqrtSum"
+ };
+
+ outputQueryResult( executeQuery( query ), exprs );
+ checkOutputFile( );
+ }
+
+ /**
+ * test sort on aggregation bindings add two bindings, one is aggregation,
+ * another is not aggregation.
+ *
+ * @throws Exception
+ */
+ public void test8( ) throws Exception
+ {
+ QueryDefinition query = newReportQuery( );
+
+ ScriptExpression e1 = new ScriptExpression( "dataSetRow.CITY" );
+ query.addResultSetExpression( "e1", e1 );
+
+ ScriptExpression e2 = new ScriptExpression( "dataSetRow.STORE" );
+ query.addResultSetExpression( "e2", e2 );
+
+ ScriptExpression e3 = new ScriptExpression( "dataSetRow.SALE_DATE" );
+ query.addResultSetExpression( "e3", e3 );
+
+ ScriptExpression e4 = new ScriptExpression( "dataSetRow.SKU" );
+ query.addResultSetExpression( "e4", e4 );
+
+ ScriptExpression e10 = new ScriptExpression( "dataSetRow.PRICE" );
+ query.addResultSetExpression( "e10", e10 );
+
+ ScriptExpression e11 = new ScriptExpression( "dataSetRow.QUANTITY" );
+ query.addResultSetExpression( "e11", e11 );
+
+ // grouping levels: CITY
+ GroupDefinition g1 = new GroupDefinition( "G1" );
+ g1.setKeyExpression( "dataSetRow.CITY" );
+ query.addGroup( g1 );
+
+ IBinding aggr1 = new Binding( "Rank",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr1.setAggrFunction( "RANK" );
+ aggr1.addAggregateOn( "G1" );
+ query.addBinding( aggr1 );
+
+ SortDefinition sort = new SortDefinition( );
+ sort.setExpression( "row[\"Rank\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ // grouping levels: store
+ GroupDefinition g2 = new GroupDefinition( "G2" );
+ g2.setKeyExpression( "dataSetRow.STORE" );
+ query.addGroup( g2 );
+
+ IBinding aggr2 = new Binding( "Runningsum",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr2.setAggrFunction( IBuildInAggregation.TOTAL_RUNNINGSUM_FUNC );
+ aggr2.addAggregateOn( "G2" );
+ query.addBinding( aggr2 );
+
+ IBinding binding1 = new Binding( "sqrtSum",
+ new ScriptExpression( "Math.sqrt(row[\"Runningsum\"])" ) );
+ query.addBinding( binding1 );
+
+ sort = new SortDefinition( );
+ sort.setExpression( "row[\"Runningsum\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ String[] exprs = new String[]{
+ "e1", "e2", "e3", "e4", "e10", "e11", "Rank", "sqrtSum"
+ };
+
+ outputQueryResult( executeQuery( query ), exprs );
+ checkOutputFile( );
+ }
+
+ /**
+ * test sort on aggregation bindings add a aggregation binding, add filter
+ *
+ * @throws Exception
+ */
+ public void test9( ) throws Exception
+ {
+ QueryDefinition query = newReportQuery( );
+
+ ScriptExpression e1 = new ScriptExpression( "dataSetRow.CITY" );
+ query.addResultSetExpression( "e1", e1 );
+
+ ScriptExpression e2 = new ScriptExpression( "dataSetRow.STORE" );
+ query.addResultSetExpression( "e2", e2 );
+
+ ScriptExpression e3 = new ScriptExpression( "dataSetRow.SALE_DATE" );
+ query.addResultSetExpression( "e3", e3 );
+
+ ScriptExpression e4 = new ScriptExpression( "dataSetRow.SKU" );
+ query.addResultSetExpression( "e4", e4 );
+
+ ScriptExpression e10 = new ScriptExpression( "dataSetRow.PRICE" );
+ query.addResultSetExpression( "e10", e10 );
+
+ ScriptExpression e11 = new ScriptExpression( "dataSetRow.QUANTITY" );
+ query.addResultSetExpression( "e11", e11 );
+
+ // grouping levels: CITY
+ GroupDefinition g1 = new GroupDefinition( "G1" );
+ g1.setKeyExpression( "dataSetRow.CITY" );
+ query.addGroup( g1 );
+
+ IBinding aggr1 = new Binding( "Rank",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr1.setAggrFunction( "RANK" );
+ aggr1.addAggregateOn( "G1" );
+ query.addBinding( aggr1 );
+
+ SortDefinition sort = new SortDefinition( );
+ sort.setExpression( "row[\"Rank\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ IConditionalExpression filter = new ConditionalExpression( "dataSetRow.CITY",
+ IConditionalExpression.OP_EQ,
+ "\"LONDON\"" );
+
+ FilterDefinition filterDefn = new FilterDefinition( filter );
+ query.addFilter( filterDefn );
+
+ String[] exprs = new String[]{
+ "e1", "e2", "e3", "e4", "e10", "e11", "Rank"
+ };
+
+ outputQueryResult( executeQuery( query ), exprs );
+ checkOutputFile( );
+ }
+
+ /**
+ * test sort on aggregation bindings add a computed column, the binding
+ * which use bind with a aggregation. e,g, aggr is a aggregation, then
+ * define a binding bind(aggr), then add a computed column sqrt(aggr),
+ *
+ * @throws Exception
+ */
+ public void test10( ) throws Exception
+ {
+ QueryDefinition query = newReportQuery( );
+
+ ScriptExpression e1 = new ScriptExpression( "dataSetRow.CITY" );
+ query.addResultSetExpression( "e1", e1 );
+
+ ScriptExpression e2 = new ScriptExpression( "dataSetRow.STORE" );
+ query.addResultSetExpression( "e2", e2 );
+
+ ScriptExpression e3 = new ScriptExpression( "dataSetRow.SALE_DATE" );
+ query.addResultSetExpression( "e3", e3 );
+
+ ScriptExpression e4 = new ScriptExpression( "dataSetRow.SKU" );
+ query.addResultSetExpression( "e4", e4 );
+
+ ScriptExpression e10 = new ScriptExpression( "dataSetRow.PRICE" );
+ query.addResultSetExpression( "e10", e10 );
+
+ ScriptExpression e11 = new ScriptExpression( "dataSetRow.QUANTITY" );
+ query.addResultSetExpression( "e11", e11 );
+
+ // grouping levels: CITY
+ GroupDefinition g1 = new GroupDefinition( "G1" );
+ g1.setKeyExpression( "dataSetRow.CITY" );
+ query.addGroup( g1 );
+
+ IBinding aggr2 = new Binding( "Runningsum",
+ new ScriptExpression( "dataSetRow[\"PRICE\"]" ) );
+ aggr2.setAggrFunction( IBuildInAggregation.TOTAL_RUNNINGSUM_FUNC );
+ aggr2.addAggregateOn( "G1" );
+ query.addBinding( aggr2 );
+
+ IBinding bind1 = new Binding( "bind1",
+ new ScriptExpression( "row[\"Runningsum\"]" ) );
+ query.addBinding( bind1 );
+
+ IBinding binding2 = new Binding( "sqrtBind1",
+ new ScriptExpression( "Math.sqrt(row[\"bind1\"])" ) );
+ query.addBinding( binding2 );
+
+ SortDefinition sort = new SortDefinition( );
+ sort.setExpression( "row[\"sqrtBind1\"]" );
+ sort.setSortDirection( ISortDefinition.SORT_ASC );
+ query.addSort( sort );
+
+ String[] exprs = new String[]{
+ "e1", "e2", "e3", "e4", "e10", "e11", "sqrtBind1"
+ };
+
+ outputQueryResult( executeQuery( query ), exprs );
+ checkOutputFile( );
+ }
+
/*
* Please refer to SCR #74988
* The value of static property "Total.OVERALL" has not been set up correctly.
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test10.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test10.txt
new file mode 100644
index 0000000..4dd9d0b
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test10.txt
@@ -0,0 +1,26 @@
+*****A new Report Start!*****
+S:0 E:2 HONG KONG Central 2004-12-11 00:00:00.0 99842783 18.88 6 4.345112196480086
+S:2 E:2 HONG KONG Central 2004-11-20 00:00:00.0 U882X223 168.0 1 13.67040599250805
+S:2 E:2 HONG KONG Central 2004-10-27 00:00:00.0 8845613D 988.0 1 34.27652257741441
+S:2 E:1 HONG KONG Central 2004-10-01 00:00:00.0 T55224 28.0 4 34.68256045911259
+S:1 E:2 LONDON Chelsea 2004-11-12 00:00:00.0 T55224 27.99 1 5.290557626564519
+S:2 E:2 LONDON Chelsea 2004-12-22 00:00:00.0 4423T662 24.11 1 7.218032973047435
+S:2 E:2 LONDON Chelsea 2004-11-02 00:00:00.0 U882X223 189.0 2 15.527395145355193
+S:2 E:2 LONDON Chelsea 2004-12-01 00:00:00.0 9774422322 2.66 6 15.612815249018993
+S:2 E:2 LONDON Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 20.80288441538817
+S:2 E:2 LONDON West End 2004-11-28 00:00:00.0 9774422322 3.0 2 20.874865269026287
+S:2 E:2 LONDON West End 2004-11-22 00:00:00.0 4423T662 26.21 1 21.49348738571756
+S:2 E:2 LONDON West End 2004-11-01 00:00:00.0 T55224 27.99 2 22.13504009483606
+S:2 E:2 LONDON West End 2004-10-21 00:00:00.0 4422236S 20.85 1 22.601106167619317
+S:2 E:1 LONDON West End 2004-12-22 00:00:00.0 89444221P 85.99 1 24.42949037536395
+S:1 E:2 NEW YORK 5th Ave 2004-10-01 00:00:00.0 4422236S 19.99 1 4.471017781221631
+S:2 E:2 NEW YORK 5th Ave 2004-11-02 00:00:00.0 665523600 99.0 2 10.90825375575761
+S:2 E:2 NEW YORK 5th Ave 2004-12-11 00:00:00.0 T55224 24.99 4 11.999166637729472
+S:2 E:2 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 2 12.388704532758863
+S:2 E:2 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 4 12.766362050325847
+S:2 E:2 NEW YORK 5th Ave 2004-11-19 00:00:00.0 5112007 26.99 1 13.782960494755834
+S:2 E:2 NEW YORK Chelsea 2004-11-27 00:00:00.0 4422236S 17.99 2 14.420818284688286
+S:2 E:2 NEW YORK Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 19.923855048659636
+S:2 E:2 NEW YORK Chelsea 2004-12-02 00:00:00.0 6772344S 299.99 1 26.399810605381244
+S:2 E:0 NEW YORK Chelsea 2004-12-01 00:00:00.0 5523330M 178.99 1 29.59628355047302
+
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test5.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test5.txt
index 737aef1..032976a 100644
--- a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test5.txt
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test5.txt
@@ -1,26 +1,26 @@
-*****A new Report Start!*****
-S:0 E:2 HONG KONG <EXCEPTION> 1202.88 1 <EXCEPTION> 18.88
-S:2 E:2 HONG KONG <EXCEPTION> 1202.88 3 <EXCEPTION> 186.88
-S:2 E:2 HONG KONG <EXCEPTION> 1202.88 4 <EXCEPTION> 1174.88
-S:2 E:1 HONG KONG <EXCEPTION> 1202.88 2 <EXCEPTION> 1202.88
-S:1 E:2 LONDON <EXCEPTION> 596.8 6 <EXCEPTION> 27.99
-S:2 E:2 LONDON <EXCEPTION> 596.8 4 <EXCEPTION> 52.099999999999994
-S:2 E:2 LONDON <EXCEPTION> 596.8 9 <EXCEPTION> 241.1
-S:2 E:2 LONDON <EXCEPTION> 596.8 1 <EXCEPTION> 243.76
-S:2 E:2 LONDON <EXCEPTION> 596.8 9 <EXCEPTION> 432.76
-S:2 E:2 LONDON <EXCEPTION> 596.8 2 <EXCEPTION> 435.76
-S:2 E:2 LONDON <EXCEPTION> 596.8 5 <EXCEPTION> 461.96999999999997
-S:2 E:2 LONDON <EXCEPTION> 596.8 6 <EXCEPTION> 489.96
-S:2 E:2 LONDON <EXCEPTION> 596.8 3 <EXCEPTION> 510.81
-S:2 E:1 LONDON <EXCEPTION> 596.8 8 <EXCEPTION> 596.8
-S:1 E:2 NEW YORK <EXCEPTION> 875.94 4 <EXCEPTION> 19.99
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 7 <EXCEPTION> 118.99
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 5 <EXCEPTION> 143.98
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 1 <EXCEPTION> 153.48
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 1 <EXCEPTION> 162.98
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 6 <EXCEPTION> 189.97
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 3 <EXCEPTION> 207.96
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 9 <EXCEPTION> 396.96000000000004
-S:2 E:2 NEW YORK <EXCEPTION> 875.94 10 <EXCEPTION> 696.95
-S:2 E:0 NEW YORK <EXCEPTION> 875.94 8 <EXCEPTION> 875.94
-
+*****A new Report Start!*****
+S:0 E:2 HONG KONG Central 2004-12-11 00:00:00.0 99842783 18.88 6 1
+S:2 E:2 HONG KONG Central 2004-10-01 00:00:00.0 T55224 28.0 4 2
+S:2 E:2 HONG KONG Central 2004-11-20 00:00:00.0 U882X223 168.0 1 3
+S:2 E:1 HONG KONG Central 2004-10-27 00:00:00.0 8845613D 988.0 1 4
+S:1 E:2 LONDON Chelsea 2004-12-01 00:00:00.0 9774422322 2.66 6 1
+S:2 E:2 LONDON West End 2004-11-28 00:00:00.0 9774422322 3.0 2 2
+S:2 E:2 LONDON West End 2004-10-21 00:00:00.0 4422236S 20.85 1 3
+S:2 E:2 LONDON Chelsea 2004-12-22 00:00:00.0 4423T662 24.11 1 4
+S:2 E:2 LONDON West End 2004-11-22 00:00:00.0 4423T662 26.21 1 5
+S:2 E:2 LONDON Chelsea 2004-11-12 00:00:00.0 T55224 27.99 1 6
+S:2 E:2 LONDON West End 2004-11-01 00:00:00.0 T55224 27.99 2 6
+S:2 E:2 LONDON West End 2004-12-22 00:00:00.0 89444221P 85.99 1 8
+S:2 E:2 LONDON Chelsea 2004-11-02 00:00:00.0 U882X223 189.0 2 9
+S:2 E:1 LONDON Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9
+S:1 E:2 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 2 1
+S:2 E:2 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 4 1
+S:2 E:2 NEW YORK Chelsea 2004-11-27 00:00:00.0 4422236S 17.99 2 3
+S:2 E:2 NEW YORK 5th Ave 2004-10-01 00:00:00.0 4422236S 19.99 1 4
+S:2 E:2 NEW YORK 5th Ave 2004-12-11 00:00:00.0 T55224 24.99 4 5
+S:2 E:2 NEW YORK 5th Ave 2004-11-19 00:00:00.0 5112007 26.99 1 6
+S:2 E:2 NEW YORK 5th Ave 2004-11-02 00:00:00.0 665523600 99.0 2 7
+S:2 E:2 NEW YORK Chelsea 2004-12-01 00:00:00.0 5523330M 178.99 1 8
+S:2 E:2 NEW YORK Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9
+S:2 E:0 NEW YORK Chelsea 2004-12-02 00:00:00.0 6772344S 299.99 1 10
+
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test6.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test6.txt
new file mode 100644
index 0000000..be09fe7
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test6.txt
@@ -0,0 +1,26 @@
+*****A new Report Start!*****
+S:0 E:3 HONG KONG Central 2004-12-11 00:00:00.0 99842783 18.88 6 1 18.88
+S:3 E:3 HONG KONG Central 2004-10-01 00:00:00.0 T55224 28.0 4 2 46.879999999999995
+S:3 E:3 HONG KONG Central 2004-11-20 00:00:00.0 U882X223 168.0 1 3 214.88
+S:3 E:1 HONG KONG Central 2004-10-27 00:00:00.0 8845613D 988.0 1 4 1202.88
+S:1 E:3 LONDON Chelsea 2004-12-01 00:00:00.0 9774422322 2.66 6 1 2.66
+S:3 E:3 LONDON Chelsea 2004-12-22 00:00:00.0 4423T662 24.11 1 4 26.77
+S:3 E:3 LONDON Chelsea 2004-11-12 00:00:00.0 T55224 27.99 1 6 54.76
+S:3 E:3 LONDON Chelsea 2004-11-02 00:00:00.0 U882X223 189.0 2 9 243.76
+S:3 E:2 LONDON Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9 432.76
+S:2 E:3 LONDON West End 2004-11-28 00:00:00.0 9774422322 3.0 2 2 3.0
+S:3 E:3 LONDON West End 2004-10-21 00:00:00.0 4422236S 20.85 1 3 23.85
+S:3 E:3 LONDON West End 2004-11-22 00:00:00.0 4423T662 26.21 1 5 50.06
+S:3 E:3 LONDON West End 2004-11-01 00:00:00.0 T55224 27.99 2 6 78.05
+S:3 E:1 LONDON West End 2004-12-22 00:00:00.0 89444221P 85.99 1 8 164.04
+S:1 E:3 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 2 1 9.5
+S:3 E:3 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 4 1 19.0
+S:3 E:3 NEW YORK 5th Ave 2004-10-01 00:00:00.0 4422236S 19.99 1 4 38.989999999999995
+S:3 E:3 NEW YORK 5th Ave 2004-12-11 00:00:00.0 T55224 24.99 4 5 63.97999999999999
+S:3 E:3 NEW YORK 5th Ave 2004-11-19 00:00:00.0 5112007 26.99 1 6 90.96999999999998
+S:3 E:2 NEW YORK 5th Ave 2004-11-02 00:00:00.0 665523600 99.0 2 7 189.96999999999997
+S:2 E:3 NEW YORK Chelsea 2004-11-27 00:00:00.0 4422236S 17.99 2 3 17.99
+S:3 E:3 NEW YORK Chelsea 2004-12-01 00:00:00.0 5523330M 178.99 1 8 196.98000000000002
+S:3 E:3 NEW YORK Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9 385.98
+S:3 E:0 NEW YORK Chelsea 2004-12-02 00:00:00.0 6772344S 299.99 1 10 685.97
+
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test7.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test7.txt
new file mode 100644
index 0000000..4de3372
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test7.txt
@@ -0,0 +1,26 @@
+*****A new Report Start!*****
+S:0 E:3 HONG KONG Central 2004-12-11 00:00:00.0 99842783 18.88 6 4.345112196480086
+S:3 E:3 HONG KONG Central 2004-11-20 00:00:00.0 U882X223 168.0 1 13.67040599250805
+S:3 E:3 HONG KONG Central 2004-10-27 00:00:00.0 8845613D 988.0 1 34.27652257741441
+S:3 E:1 HONG KONG Central 2004-10-01 00:00:00.0 T55224 28.0 4 34.68256045911259
+S:1 E:3 LONDON Chelsea 2004-11-12 00:00:00.0 T55224 27.99 1 5.290557626564519
+S:3 E:3 LONDON Chelsea 2004-12-22 00:00:00.0 4423T662 24.11 1 7.218032973047435
+S:3 E:3 LONDON Chelsea 2004-11-02 00:00:00.0 U882X223 189.0 2 15.527395145355193
+S:3 E:3 LONDON Chelsea 2004-12-01 00:00:00.0 9774422322 2.66 6 15.612815249018993
+S:3 E:2 LONDON Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 20.80288441538817
+S:2 E:3 LONDON West End 2004-11-28 00:00:00.0 9774422322 3.0 2 1.7320508075688772
+S:3 E:3 LONDON West End 2004-11-22 00:00:00.0 4423T662 26.21 1 5.404627646748664
+S:3 E:3 LONDON West End 2004-11-01 00:00:00.0 T55224 27.99 2 7.563068160475615
+S:3 E:3 LONDON West End 2004-10-21 00:00:00.0 4422236S 20.85 1 8.834591105421914
+S:3 E:1 LONDON West End 2004-12-22 00:00:00.0 89444221P 85.99 1 12.807810117268293
+S:1 E:3 NEW YORK 5th Ave 2004-10-01 00:00:00.0 4422236S 19.99 1 4.471017781221631
+S:3 E:3 NEW YORK 5th Ave 2004-11-02 00:00:00.0 665523600 99.0 2 10.90825375575761
+S:3 E:3 NEW YORK 5th Ave 2004-12-11 00:00:00.0 T55224 24.99 4 11.999166637729472
+S:3 E:3 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 2 12.388704532758863
+S:3 E:3 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 4 12.766362050325847
+S:3 E:2 NEW YORK 5th Ave 2004-11-19 00:00:00.0 5112007 26.99 1 13.782960494755834
+S:2 E:3 NEW YORK Chelsea 2004-11-27 00:00:00.0 4422236S 17.99 2 4.241462012089699
+S:3 E:3 NEW YORK Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 14.38714704171748
+S:3 E:3 NEW YORK Chelsea 2004-12-02 00:00:00.0 6772344S 299.99 1 22.516216378423795
+S:3 E:0 NEW YORK Chelsea 2004-12-01 00:00:00.0 5523330M 178.99 1 26.191028998494886
+
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test8.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test8.txt
new file mode 100644
index 0000000..533954b
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test8.txt
@@ -0,0 +1,26 @@
+*****A new Report Start!*****
+S:0 E:3 HONG KONG Central 2004-12-11 00:00:00.0 99842783 18.88 6 1 4.345112196480086
+S:3 E:3 HONG KONG Central 2004-10-01 00:00:00.0 T55224 28.0 4 2 6.846897107449475
+S:3 E:3 HONG KONG Central 2004-11-20 00:00:00.0 U882X223 168.0 1 3 14.658785761446955
+S:3 E:1 HONG KONG Central 2004-10-27 00:00:00.0 8845613D 988.0 1 4 34.68256045911259
+S:1 E:3 LONDON Chelsea 2004-12-01 00:00:00.0 9774422322 2.66 6 1 1.6309506430300091
+S:3 E:3 LONDON Chelsea 2004-12-22 00:00:00.0 4423T662 24.11 1 4 5.173973328110612
+S:3 E:3 LONDON Chelsea 2004-11-12 00:00:00.0 T55224 27.99 1 6 7.3999999999999995
+S:3 E:3 LONDON Chelsea 2004-11-02 00:00:00.0 U882X223 189.0 2 9 15.612815249018993
+S:3 E:2 LONDON Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9 20.80288441538817
+S:2 E:3 LONDON West End 2004-11-28 00:00:00.0 9774422322 3.0 2 2 1.7320508075688772
+S:3 E:3 LONDON West End 2004-10-21 00:00:00.0 4422236S 20.85 1 3 4.883646178829912
+S:3 E:3 LONDON West End 2004-11-22 00:00:00.0 4423T662 26.21 1 5 7.075309180523492
+S:3 E:3 LONDON West End 2004-11-01 00:00:00.0 T55224 27.99 2 6 8.834591105421914
+S:3 E:1 LONDON West End 2004-12-22 00:00:00.0 89444221P 85.99 1 8 12.807810117268291
+S:1 E:3 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 2 1 3.082207001484488
+S:3 E:3 NEW YORK 5th Ave 2004-10-05 00:00:00.0 666440002 9.5 4 1 4.358898943540674
+S:3 E:3 NEW YORK 5th Ave 2004-10-01 00:00:00.0 4422236S 19.99 1 4 6.244197306299665
+S:3 E:3 NEW YORK 5th Ave 2004-12-11 00:00:00.0 T55224 24.99 4 5 7.998749902328488
+S:3 E:3 NEW YORK 5th Ave 2004-11-19 00:00:00.0 5112007 26.99 1 6 9.537819457297354
+S:3 E:2 NEW YORK 5th Ave 2004-11-02 00:00:00.0 665523600 99.0 2 7 13.782960494755834
+S:2 E:3 NEW YORK Chelsea 2004-11-27 00:00:00.0 4422236S 17.99 2 3 4.241462012089699
+S:3 E:3 NEW YORK Chelsea 2004-12-01 00:00:00.0 5523330M 178.99 1 8 14.034956359034396
+S:3 E:3 NEW YORK Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9 19.64637371119668
+S:3 E:0 NEW YORK Chelsea 2004-12-02 00:00:00.0 6772344S 299.99 1 10 26.191028998494886
+
diff --git a/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test9.txt b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test9.txt
new file mode 100644
index 0000000..9cf24ff
--- /dev/null
+++ b/data/org.eclipse.birt.data.tests/test/org/eclipse/birt/data/engine/impl/golden/AggregationTest.test9.txt
@@ -0,0 +1,12 @@
+*****A new Report Start!*****
+S:0 E:2 LONDON Chelsea 2004-12-01 00:00:00.0 9774422322 2.66 6 1
+S:2 E:2 LONDON West End 2004-11-28 00:00:00.0 9774422322 3.0 2 2
+S:2 E:2 LONDON West End 2004-10-21 00:00:00.0 4422236S 20.85 1 3
+S:2 E:2 LONDON Chelsea 2004-12-22 00:00:00.0 4423T662 24.11 1 4
+S:2 E:2 LONDON West End 2004-11-22 00:00:00.0 4423T662 26.21 1 5
+S:2 E:2 LONDON Chelsea 2004-11-12 00:00:00.0 T55224 27.99 1 6
+S:2 E:2 LONDON West End 2004-11-01 00:00:00.0 T55224 27.99 2 6
+S:2 E:2 LONDON West End 2004-12-22 00:00:00.0 89444221P 85.99 1 8
+S:2 E:2 LONDON Chelsea 2004-11-02 00:00:00.0 U882X223 189.0 2 9
+S:2 E:0 LONDON Chelsea 2004-12-20 00:00:00.0 U882X223 189.0 1 9
+