You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2019/01/30 09:04:48 UTC
[ignite] branch master updated: IGNITE-11117: SQL: Moved partition
model to core module. This closes #5956.
This is an automated email from the ASF dual-hosted git repository.
vozerov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 0b00370 IGNITE-11117: SQL: Moved partition model to core module. This closes #5956.
0b00370 is described below
commit 0b00370e6a34ce1d443490d3a73c9b860cacfebc
Author: devozerov <vo...@gridgain.com>
AuthorDate: Wed Jan 30 12:03:38 2019 +0300
IGNITE-11117: SQL: Moved partition model to core module. This closes #5956.
---
.../affinity/PartitionAffinityFunctionType.java | 2 +-
.../sql/optimizer}/affinity/PartitionAllNode.java | 2 +-
.../affinity/PartitionCompositeNode.java | 2 +-
.../affinity/PartitionCompositeNodeOperator.java | 2 +-
.../optimizer}/affinity/PartitionConstantNode.java | 2 +-
.../optimizer}/affinity/PartitionGroupNode.java | 2 +-
.../affinity/PartitionJoinCondition.java | 2 +-
.../optimizer}/affinity/PartitionJoinGroup.java | 2 +-
.../sql/optimizer}/affinity/PartitionNode.java | 2 +-
.../sql/optimizer}/affinity/PartitionNoneNode.java | 2 +-
.../affinity/PartitionParameterNode.java | 21 +++++-----
.../sql/optimizer/affinity/PartitionResolver.java} | 36 ++++++----------
.../sql/optimizer}/affinity/PartitionResult.java | 2 +-
.../optimizer}/affinity/PartitionSingleNode.java | 2 +-
.../sql/optimizer}/affinity/PartitionTable.java | 2 +-
.../affinity/PartitionTableAffinityDescriptor.java | 2 +-
.../optimizer}/affinity/PartitionTableModel.java | 2 +-
.../cache/query/GridCacheTwoStepQuery.java | 2 +-
.../processors/query/h2/IgniteH2Indexing.java | 6 ++-
...nConstantNode.java => H2PartitionResolver.java} | 41 +++++++-----------
.../query/h2/affinity/PartitionExtractor.java | 49 ++++++++++++++--------
21 files changed, 87 insertions(+), 98 deletions(-)
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAffinityFunctionType.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionAffinityFunctionType.java
similarity index 95%
copy from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAffinityFunctionType.java
copy to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionAffinityFunctionType.java
index 4c88fcb..66c20c0 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAffinityFunctionType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionAffinityFunctionType.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
/**
* Affinity function type.
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAllNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionAllNode.java
similarity index 96%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAllNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionAllNode.java
index 30860f5..c625089 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAllNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionAllNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionCompositeNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionCompositeNode.java
similarity index 99%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionCompositeNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionCompositeNode.java
index 45ceaaf..d724cf8 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionCompositeNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionCompositeNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionCompositeNodeOperator.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionCompositeNodeOperator.java
similarity index 95%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionCompositeNodeOperator.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionCompositeNodeOperator.java
index 3176dce..1c64e64 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionCompositeNodeOperator.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionCompositeNodeOperator.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.jetbrains.annotations.Nullable;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionConstantNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionConstantNode.java
similarity index 96%
copy from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionConstantNode.java
copy to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionConstantNode.java
index 9e258ae..da9dca2 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionConstantNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionConstantNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionGroupNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionGroupNode.java
similarity index 98%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionGroupNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionGroupNode.java
index 3d66439..b7106a7 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionGroupNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionGroupNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionJoinCondition.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionJoinCondition.java
similarity index 98%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionJoinCondition.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionJoinCondition.java
index 244c301..af69eb3 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionJoinCondition.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionJoinCondition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.typedef.F;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionJoinGroup.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionJoinGroup.java
similarity index 97%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionJoinGroup.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionJoinGroup.java
index 641d013..68fa38e 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionJoinGroup.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionJoinGroup.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import java.util.Collection;
import java.util.Collections;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java
similarity index 95%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java
index 7372fc2..c8c354c 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.IgniteCheckedException;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionNoneNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNoneNode.java
similarity index 96%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionNoneNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNoneNode.java
index 5d4b324..f136fc9 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionNoneNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNoneNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionParameterNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionParameterNode.java
similarity index 77%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionParameterNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionParameterNode.java
index e9f4880..6219c30 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionParameterNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionParameterNode.java
@@ -15,11 +15,9 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.processors.query.h2.H2Utils;
-import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -29,7 +27,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
public class PartitionParameterNode extends PartitionSingleNode {
/** Indexing. */
@GridToStringExclude
- private final IgniteH2Indexing indexing;
+ private final PartitionResolver partResolver;
/** Index. */
private final int idx;
@@ -41,15 +39,14 @@ public class PartitionParameterNode extends PartitionSingleNode {
* Constructor.
*
* @param tbl Table descriptor.
- * @param indexing Indexing.
+ * @param partResolver Partition resolver.
* @param idx Parameter index.
* @param dataType Parameter data type.
*/
- public PartitionParameterNode(PartitionTable tbl, IgniteH2Indexing indexing, int idx,
- int dataType) {
+ public PartitionParameterNode(PartitionTable tbl, PartitionResolver partResolver, int idx, int dataType) {
super(tbl);
- this.indexing = indexing;
+ this.partResolver = partResolver;
this.idx = idx;
this.dataType = dataType;
}
@@ -59,9 +56,11 @@ public class PartitionParameterNode extends PartitionSingleNode {
assert args != null;
assert idx < args.length;
- Object param = H2Utils.convert(args[idx], indexing, dataType);
-
- return indexing.kernalContext().affinity().partition(tbl.cacheName(), param);
+ return partResolver.partition(
+ args[idx],
+ dataType,
+ tbl.cacheName()
+ );
}
/** {@inheritDoc} */
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAffinityFunctionType.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionResolver.java
similarity index 61%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAffinityFunctionType.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionResolver.java
index 4c88fcb..e606200 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionAffinityFunctionType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionResolver.java
@@ -15,34 +15,22 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
+
+import org.apache.ignite.IgniteCheckedException;
/**
- * Affinity function type.
+ * Partition resolver interface. Takes argument, data type and cache name, returns partition.
*/
-public enum PartitionAffinityFunctionType {
- /** Custom affintiy function. */
- CUSTOM(0),
-
- /** Rendezvous affinity function. */
- RENDEZVOUS(1);
-
- /** Value. */
- private final int val;
-
+public interface PartitionResolver {
/**
- * Constructor.
+ * Resolve partition.
*
- * @param val Value.
- */
- PartitionAffinityFunctionType(int val) {
- this.val = val;
- }
-
- /**
- * @return Value.
+ * @param arg Argument.
+ * @param dataType Data type.
+ * @param cacheName Cache name.
+ * @return Partition.
+ * @throws IgniteCheckedException If failed.
*/
- public int value() {
- return val;
- }
+ int partition(Object arg, int dataType, String cacheName) throws IgniteCheckedException;
}
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionResult.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionResult.java
similarity index 96%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionResult.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionResult.java
index daa14d3..ba5064e 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionResult.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionSingleNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionSingleNode.java
similarity index 97%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionSingleNode.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionSingleNode.java
index 35e7d30..466e1c6 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionSingleNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionSingleNode.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTable.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTable.java
similarity index 97%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTable.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTable.java
index 1b996c1..5ac4b69 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTable.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTable.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTableAffinityDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTableAffinityDescriptor.java
similarity index 98%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTableAffinityDescriptor.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTableAffinityDescriptor.java
index 21dab9c..97bbb77 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTableAffinityDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTableAffinityDescriptor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTableModel.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTableModel.java
similarity index 98%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTableModel.java
rename to modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTableModel.java
index 6393941..90101ea 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionTableModel.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionTableModel.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.h2.affinity;
+package org.apache.ignite.internal.sql.optimizer.affinity;
import org.jetbrains.annotations.Nullable;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheTwoStepQuery.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheTwoStepQuery.java
index 685344a..78ae003 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheTwoStepQuery.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheTwoStepQuery.java
@@ -22,7 +22,7 @@ import java.util.List;
import java.util.Set;
import org.apache.ignite.internal.processors.query.QueryUtils;
-import org.apache.ignite.internal.processors.query.h2.affinity.PartitionResult;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionResult;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index d4598e6..69cbaae 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -93,7 +93,8 @@ import org.apache.ignite.internal.processors.query.RunningQueryManager;
import org.apache.ignite.internal.processors.query.SqlClientContext;
import org.apache.ignite.internal.processors.query.UpdateSourceIterator;
import org.apache.ignite.internal.processors.query.h2.affinity.PartitionExtractor;
-import org.apache.ignite.internal.processors.query.h2.affinity.PartitionResult;
+import org.apache.ignite.internal.processors.query.h2.affinity.H2PartitionResolver;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionResult;
import org.apache.ignite.internal.processors.query.h2.database.H2TreeClientIndex;
import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex;
import org.apache.ignite.internal.processors.query.h2.database.io.H2ExtrasInnerIO;
@@ -2040,6 +2041,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
failed = false;
return new QueryCursorImpl<>(new Iterable<List<?>>() {
+ @SuppressWarnings("NullableProblems")
@Override public Iterator<List<?>> iterator() {
return new Iterator<List<?>>() {
@Override public boolean hasNext() {
@@ -2420,7 +2422,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
dmlProc = new DmlStatementsProcessor(ctx, this);
ddlProc = new DdlStatementsProcessor(ctx, schemaMgr);
- partExtractor = new PartitionExtractor(this);
+ partExtractor = new PartitionExtractor(new H2PartitionResolver(this));
runningQueryMgr = new RunningQueryManager(ctx);
if (JdbcUtils.serializer != null)
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionConstantNode.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/H2PartitionResolver.java
similarity index 53%
rename from modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionConstantNode.java
rename to modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/H2PartitionResolver.java
index 9e258ae..7520c2c 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionConstantNode.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/H2PartitionResolver.java
@@ -17,44 +17,31 @@
package org.apache.ignite.internal.processors.query.h2.affinity;
-import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.processors.query.h2.H2Utils;
+import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionResolver;
/**
- * Node with constant partition.
+ * Default partition resolver implementation which uses H2 to convert types appropriately.
*/
-public class PartitionConstantNode extends PartitionSingleNode {
- /** Partition. */
- private final int part;
+public class H2PartitionResolver implements PartitionResolver {
+ /** Indexing. */
+ private final IgniteH2Indexing idx;
/**
* Constructor.
*
- * @param tbl Table.
- * @param part Partition.
+ * @param idx Indexing.
*/
- public PartitionConstantNode(PartitionTable tbl, int part) {
- super(tbl);
-
- this.part = part;
+ public H2PartitionResolver(IgniteH2Indexing idx) {
+ this.idx = idx;
}
/** {@inheritDoc} */
- @Override public int applySingle(Object... args) {
- return part;
- }
-
- /** {@inheritDoc} */
- @Override public boolean constant() {
- return true;
- }
+ @Override public int partition(Object arg, int dataType, String cacheName) throws IgniteCheckedException {
+ Object param = H2Utils.convert(arg, idx, dataType);
- /** {@inheritDoc} */
- @Override public int value() {
- return part;
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(PartitionConstantNode.class, this);
+ return idx.kernalContext().affinity().partition(cacheName, param);
}
}
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
index 0898e63..f82be53 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/affinity/PartitionExtractor.java
@@ -17,17 +17,12 @@
package org.apache.ignite.internal.processors.query.h2.affinity;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery;
-import org.apache.ignite.internal.processors.query.h2.H2Utils;
-import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlAst;
@@ -41,6 +36,21 @@ import org.apache.ignite.internal.processors.query.h2.sql.GridSqlParameter;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuery;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlTable;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionAffinityFunctionType;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionAllNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionCompositeNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionCompositeNodeOperator;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionConstantNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionGroupNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionJoinCondition;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionNoneNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionParameterNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionResult;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionSingleNode;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionTable;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionTableAffinityDescriptor;
+import org.apache.ignite.internal.sql.optimizer.affinity.PartitionTableModel;
import org.apache.ignite.internal.util.typedef.F;
import org.h2.table.Column;
import org.h2.value.Value;
@@ -48,6 +58,9 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
/**
* Partition tree extractor.
@@ -59,8 +72,8 @@ public class PartitionExtractor {
*/
private static final int DFLT_MAX_EXTRACTED_PARTS_FROM_BETWEEN = 16;
- /** Indexing. */
- private final IgniteH2Indexing idx;
+ /** Partition resolver. */
+ private final H2PartitionResolver partResolver;
/** Maximum number of partitions to be used in case of between expression. */
private final int maxPartsCntBetween;
@@ -68,10 +81,10 @@ public class PartitionExtractor {
/**
* Constructor.
*
- * @param idx Indexing.
+ * @param partResolver Partition resolver.
*/
- public PartitionExtractor(IgniteH2Indexing idx) {
- this.idx = idx;
+ public PartitionExtractor(H2PartitionResolver partResolver) {
+ this.partResolver = partResolver;
maxPartsCntBetween = Integer.getInteger(
IgniteSystemProperties.IGNITE_SQL_MAX_EXTRACTED_PARTS_FROM_BETWEEN,
@@ -602,14 +615,16 @@ public class PartitionExtractor {
return null;
if (rightConst != null) {
- Object constVal = H2Utils.convert(rightConst.value().getObject(), idx, leftCol0.getType());
-
- int part = idx.kernalContext().affinity().partition(tbl.cacheName(), constVal);
+ int part = partResolver.partition(
+ rightConst.value().getObject(),
+ leftCol0.getType(),
+ tbl.cacheName()
+ );
return new PartitionConstantNode(tbl0, part);
}
else if (rightParam != null)
- return new PartitionParameterNode(tbl0, idx, rightParam.index(), leftCol0.getType());
+ return new PartitionParameterNode(tbl0, partResolver, rightParam.index(), leftCol0.getType());
else
return null;
}
@@ -746,9 +761,7 @@ public class PartitionExtractor {
return null;
for (long i = leftLongVal; i <= rightLongVal; i++) {
- Object constVal = H2Utils.convert(i, idx, leftCol.column().getType());
-
- int part = idx.kernalContext().affinity().partition(tbl0.cacheName(), constVal);
+ int part = partResolver.partition(i , leftCol.column().getType(), tbl0.cacheName());
parts.add(new PartitionConstantNode(tbl0, part));