You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2015/04/06 19:59:38 UTC
[08/50] incubator-ignite git commit: # IGNITE-540 Sql param
substitution does not work in a case.
# IGNITE-540 Sql param substitution does not work in a case.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8a5180c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8a5180c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8a5180c5
Branch: refs/heads/ignite-674
Commit: 8a5180c5f83013eff0e09f7698313fb947fdc756
Parents: 3af6914
Author: sevdokimov <se...@gridgain.com>
Authored: Fri Apr 3 16:18:26 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri Apr 3 16:18:26 2015 +0300
----------------------------------------------------------------------
.../h2/twostep/GridReduceQueryExecutor.java | 43 ++++++++++++++------
1 file changed, 31 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8a5180c5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index b660f7e..7941f12 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -445,20 +445,28 @@ public class GridReduceQueryExecutor implements GridMessageListener {
String name = expr.getAlias();
long precision = expr.getPrecision();
int displaySize = expr.getDisplaySize();
- DataType dt = DataType.getDataType(type);
- if (precision > 0 && (dt.defaultPrecision == 0 ||
- (dt.defaultPrecision > precision && dt.defaultPrecision < Byte.MAX_VALUE))) {
- // dont' set precision to MAX_VALUE if this is the default
- precision = dt.defaultPrecision;
- }
int scale = expr.getScale();
- if (scale > 0 && (dt.defaultScale == 0 ||
- (dt.defaultScale > scale && dt.defaultScale < precision))) {
- scale = dt.defaultScale;
+
+ if (type != Value.UNKNOWN) {
+ DataType dt = DataType.getDataType(type);
+
+ if (precision > 0 && (dt.defaultPrecision == 0 ||
+ (dt.defaultPrecision > precision && dt.defaultPrecision < Byte.MAX_VALUE))) {
+ // dont' set precision to MAX_VALUE if this is the default
+ precision = dt.defaultPrecision;
+ }
+
+ if (scale > 0 && (dt.defaultScale == 0 ||
+ (dt.defaultScale > scale && dt.defaultScale < precision)))
+ scale = dt.defaultScale;
+
+ if (scale > precision)
+ precision = scale;
}
- if (scale > precision) {
- precision = scale;
+ else {
+ System.out.println("1");
}
+
Column col = new Column(name, type, precision, scale, displaySize);
cols.add(col);
}
@@ -481,7 +489,18 @@ public class GridReduceQueryExecutor implements GridMessageListener {
data.tableName = "T___";
data.schema = ses.getDatabase().getSchema(ses.getCurrentSchemaName());
data.create = true;
- data.columns = generateColumnsFromQuery((Query)ses.prepare(qry.query(), false));
+
+ Query prepare = (Query)ses.prepare(qry.query(), false);
+
+ ArrayList<Parameter> parsedParams = prepare.getParameters();
+
+ for (int i = Math.min(parsedParams.size(), qry.parameters().length); --i >= 0; ) {
+ Object val = qry.parameters()[i];
+
+ parsedParams.get(i).setValue(DataType.convertToValue(ses, val, Value.UNKNOWN));
+ }
+
+ data.columns = generateColumnsFromQuery(prepare);
return new GridMergeTable(data);
}