ignite-gg9499 - avg fixes

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/eda4dd0e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/eda4dd0e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/eda4dd0e

Branch: refs/heads/ignite-gg9499
Commit: eda4dd0e04f4825bb9ae6f556edc74c38dcb2d04
Parents: bdf988e
Author: S.Vladykin <svlady...@gridgain.com>
Authored: Mon Jan 26 00:22:08 2015 +0300
Committer: S.Vladykin <svlady...@gridgain.com>
Committed: Mon Jan 26 00:22:08 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/sql/GridSqlQuerySplitter.java       | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eda4dd0e/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 4251451..b6e6f33 100644
--- 
a/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/gridgain/grid/kernal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -11,7 +11,6 @@ package org.gridgain.grid.kernal.processors.query.h2.sql;
 
 import org.apache.ignite.*;
 import org.gridgain.grid.kernal.processors.cache.query.*;
-import org.gridgain.grid.util.typedef.*;
 
 import java.sql.*;
 import java.util.*;
@@ -51,6 +50,7 @@ public class GridSqlQuerySplitter {
      * @return Two step query.
      */
     public static GridCacheTwoStepQuery split(Connection conn, String query, 
Object[] params) {
+        // TODO possibly get column types from query.
         GridSqlSelect srcQry = GridSqlQueryParser.parse(conn, query);
 
         if (srcQry.groups().isEmpty()) { // Simple case.
@@ -127,7 +127,7 @@ public class GridSqlQuerySplitter {
             String mapAggAlias = columnName(idx);
 
             switch (agg.type()) {
-                case AVG: // SUM( AVG(x)*COUNT(x) )/SUM( COUNT(x) ).
+                case AVG: // SUM( AVG(CAST(x AS DECIMAL))*COUNT(x) )/SUM( 
COUNT(x) ).
                     //-- COUNT(x) map
                     GridSqlElement cntMapAgg = aggregate(agg.distinct(), 
COUNT).addChild(agg.child());
 
@@ -139,8 +139,9 @@ public class GridSqlQuerySplitter {
 
                     mapSelect.add(cntMapAgg);
 
-                    //-- AVG(x) map
-                    mapAgg = aggregate(agg.distinct(), 
AVG).addChild(agg.child()); // Add function argument.
+                    //-- AVG(CAST(x AS DECIMAL)) map
+                    mapAgg = aggregate(agg.distinct(), AVG).addChild( // Add 
function argument.
+                        
function(CAST).setCastType("DECIMAL").addChild(agg.child()));
 
                     //-- SUM( AVG(x)*COUNT(x) )/SUM( COUNT(x) ) reduce
                     GridSqlElement sumUpRdc = aggregate(false, SUM).addChild(

Reply via email to