This is an automated email from the ASF dual-hosted git repository.
gvvinblade pushed a commit to branch ignite-12248
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/ignite-12248 by this push:
new a77161f refactoring
a77161f is described below
commit a77161fd35dc34fedd37c29c451a6da398ee4566
Author: Igor Seliverstov <[email protected]>
AuthorDate: Mon Nov 25 18:19:50 2019 +0300
refactoring
---
.../query/calcite/prepare/IgnitePlanner.java | 26 ++----
.../processors/query/calcite/rule/IgniteRules.java | 15 +---
.../query/calcite/serialize/ConversionContext.java | 92 ----------------------
.../serialize/{ => expression}/CallExpression.java | 8 +-
.../{ => expression}/DynamicParamExpression.java | 9 ++-
.../serialize/{ => expression}/ExpImplementor.java | 2 +-
.../{ => expression}/ExpToRexTranslator.java | 8 +-
.../Expression.java} | 4 +-
.../{ => expression}/InputRefExpression.java | 9 ++-
.../{ => expression}/LiteralExpression.java | 9 ++-
.../{ => expression}/LocalRefExpression.java | 9 ++-
.../{ => expression}/RexToExpTranslator.java | 34 ++++----
.../ConversionContext.java} | 20 +++--
.../serialize/{ => relation}/FilterNode.java | 10 ++-
.../serialize/relation/GraphToRelConverter.java | 89 +++++++++++++++++++++
.../calcite/serialize/{ => relation}/JoinNode.java | 14 ++--
.../serialize/{ => relation}/ProjectNode.java | 17 ++--
.../serialize/{ => relation}/ReceiverNode.java | 13 +--
.../calcite/serialize/{ => relation}/RelGraph.java | 4 +-
.../serialize/{ => relation}/RelGraphNode.java | 3 +-
.../{ => relation}/RelToGraphConverter.java | 3 +-
.../serialize/{ => relation}/SenderNode.java | 2 +-
.../serialize/{ => relation}/SerializedTraits.java | 2 +-
.../serialize/{ => relation}/TableScanNode.java | 4 +-
.../{ExpDataType.java => type/DataType.java} | 6 +-
.../calcite/serialize/{ => type}/SimpleType.java | 4 +-
.../calcite/serialize/{ => type}/StructType.java | 12 +--
.../query/calcite/splitter/Fragment.java | 14 ++--
.../query/calcite/CalciteQueryProcessorTest.java | 10 +--
29 files changed, 223 insertions(+), 229 deletions(-)
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java
index c9f9f26..2462785 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java
@@ -26,7 +26,6 @@ import org.apache.calcite.config.CalciteConnectionConfig;
import org.apache.calcite.config.CalciteConnectionConfigImpl;
import org.apache.calcite.config.CalciteConnectionProperty;
import org.apache.calcite.jdbc.CalciteSchema;
-import org.apache.calcite.linq4j.Ord;
import org.apache.calcite.plan.Context;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptCostImpl;
@@ -74,15 +73,13 @@ import
org.apache.ignite.internal.processors.query.calcite.metadata.IgniteMetada
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
import org.apache.ignite.internal.processors.query.calcite.rule.PlannerPhase;
import org.apache.ignite.internal.processors.query.calcite.rule.PlannerType;
-import
org.apache.ignite.internal.processors.query.calcite.serialize.ConversionContext;
import org.apache.ignite.internal.processors.query.calcite.serialize.Graph;
-import org.apache.ignite.internal.processors.query.calcite.serialize.RelGraph;
-import
org.apache.ignite.internal.processors.query.calcite.serialize.RelGraphNode;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.relation.GraphToRelConverter;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.relation.RelGraph;
import org.apache.ignite.internal.processors.query.calcite.splitter.QueryPlan;
import org.apache.ignite.internal.processors.query.calcite.splitter.Splitter;
import
org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
import
org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeSystem;
-import org.apache.ignite.internal.util.typedef.F;
/**
*
@@ -212,23 +209,10 @@ public class IgnitePlanner implements Planner,
RelOptTable.ViewExpander {
public RelNode convert(RelGraph graph) {
ready();
- CalciteCatalogReader catalogReader = createCatalogReader();
- RexBuilder rexBuilder = createRexBuilder();
- RelOptCluster cluster = RelOptCluster.create(planner, rexBuilder);
- RelBuilder relBuilder = createRelBuilder(cluster, catalogReader);
-
- ConversionContext ctx = new ConversionContext(this, relBuilder,
operatorTable);
-
- return F.first(convertRecursive(ctx, graph, graph.nodes().subList(0,
1)));
- }
-
- private List<RelNode> convertRecursive(ConversionContext ctx, RelGraph
graph, List<Ord<RelGraphNode>> src) {
- ImmutableList.Builder<RelNode> b = ImmutableList.builder();
-
- for (Ord<RelGraphNode> node : src)
- b.add(node.e.toRel(ctx, convertRecursive(ctx, graph,
graph.children(node.i))));
+ RelOptCluster cluster = RelOptCluster.create(planner,
createRexBuilder());
+ RelBuilder relBuilder = createRelBuilder(cluster,
createCatalogReader());
- return b.build();
+ return new GraphToRelConverter(this, relBuilder,
operatorTable).convert(graph);
}
/** {@inheritDoc} */
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IgniteRules.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IgniteRules.java
index d82147d7..d089339 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IgniteRules.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IgniteRules.java
@@ -22,7 +22,6 @@ import java.util.List;
import org.apache.calcite.plan.Context;
import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.volcano.AbstractConverter;
-import org.apache.calcite.rel.rules.AbstractMaterializedViewRule;
import org.apache.calcite.rel.rules.AggregateExpandDistinctAggregatesRule;
import org.apache.calcite.rel.rules.AggregateJoinTransposeRule;
import org.apache.calcite.rel.rules.AggregateMergeRule;
@@ -44,7 +43,6 @@ import org.apache.calcite.rel.rules.IntersectToDistinctRule;
import org.apache.calcite.rel.rules.JoinCommuteRule;
import org.apache.calcite.rel.rules.JoinPushExpressionsRule;
import org.apache.calcite.rel.rules.JoinPushThroughJoinRule;
-import org.apache.calcite.rel.rules.MaterializedViewFilterScanRule;
import org.apache.calcite.rel.rules.ProjectFilterTransposeRule;
import org.apache.calcite.rel.rules.ProjectMergeRule;
import org.apache.calcite.rel.rules.ProjectRemoveRule;
@@ -141,15 +139,6 @@ public class IgniteRules {
ValuesReduceRule.PROJECT_INSTANCE,
AggregateValuesRule.INSTANCE);
- public static final List<RelOptRule> MATERIALIZATION_RULES =
ImmutableList.of(
- MaterializedViewFilterScanRule.INSTANCE,
- AbstractMaterializedViewRule.INSTANCE_PROJECT_FILTER,
- AbstractMaterializedViewRule.INSTANCE_FILTER,
- AbstractMaterializedViewRule.INSTANCE_PROJECT_JOIN,
- AbstractMaterializedViewRule.INSTANCE_JOIN,
- AbstractMaterializedViewRule.INSTANCE_PROJECT_AGGREGATE,
- AbstractMaterializedViewRule.INSTANCE_AGGREGATE);
-
public static final List<RelOptRule> SUBQUERY_REWRITE_RULES =
ImmutableList.of(
SubQueryRemoveRule.FILTER,
SubQueryRemoveRule.PROJECT,
@@ -162,8 +151,10 @@ public class IgniteRules {
public static List<RelOptRule> logicalRules(Context ctx) {
return ImmutableList.<RelOptRule>builder()
+ .addAll(BASE_RULES)
+ .addAll(ABSTRACT_RULES)
+ .addAll(ABSTRACT_RELATIONAL_RULES)
.addAll(IGNITE_RULES)
- .add(AbstractConverter.ExpandConversionRule.INSTANCE)
.build();
}
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ConversionContext.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ConversionContext.java
deleted file mode 100644
index a2ed800..0000000
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ConversionContext.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2019 GridGain Systems, Inc. and Contributors.
- *
- * Licensed under the GridGain Community Edition License (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *
https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.query.calcite.serialize;
-
-import java.util.List;
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptSchema;
-import org.apache.calcite.plan.RelOptTable;
-import org.apache.calcite.rel.RelRoot;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.rex.RexBuilder;
-import org.apache.calcite.sql.SqlOperatorTable;
-import org.apache.calcite.tools.RelBuilder;
-import
org.apache.ignite.internal.processors.query.calcite.prepare.IgnitePlanner;
-
-/**
- *
- */
-public class ConversionContext implements RelOptTable.ToRelContext {
- private final IgnitePlanner planner;
- private final SqlOperatorTable operatorTable;
- private final RelBuilder relBuilder;
- private final ExpToRexTranslator expTranslator;
-
- public ConversionContext(IgnitePlanner planner, RelBuilder relBuilder,
SqlOperatorTable operatorTable) {
- this.planner = planner;
- this.relBuilder = relBuilder;
- this.operatorTable = operatorTable;
-
- expTranslator = new ExpToRexTranslator(rexBuilder(), typeFactory(),
operatorTable);
- }
-
- public IgnitePlanner planner() {
- return planner;
- }
-
- public RelDataTypeFactory typeFactory() {
- return cluster().getTypeFactory();
- }
-
- public SqlOperatorTable operatorTable() {
- return operatorTable;
- }
-
- public RelOptSchema schema() {
- return relBuilder().getRelOptSchema();
- }
-
- public RelOptCluster cluster() {
- return relBuilder().getCluster();
- }
-
- public Context context() {
- return cluster().getPlanner().getContext();
- }
-
- public RelBuilder relBuilder() {
- return relBuilder;
- }
-
- public RexBuilder rexBuilder() {
- return cluster().getRexBuilder();
- }
-
- public ExpToRexTranslator expressionTranslator() {
- return expTranslator;
- }
-
- @Override public RelOptCluster getCluster() {
- return cluster();
- }
-
- @Override public RelRoot expandView(RelDataType rowType, String
queryString, List<String> schemaPath, List<String> viewPath) {
- return planner.expandView(rowType, queryString, schemaPath, viewPath);
- }
-}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/CallExpression.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/CallExpression.java
similarity index 85%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/CallExpression.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/CallExpression.java
index 384256a..ab75446 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/CallExpression.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/CallExpression.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import java.util.List;
import org.apache.calcite.sql.SqlOperator;
@@ -23,12 +23,12 @@ import org.apache.calcite.sql.SqlSyntax;
/**
*
*/
-public class CallExpression implements LogicalExpression {
+public class CallExpression implements Expression {
public final String opName;
public final SqlSyntax opSyntax;
- public final List<LogicalExpression> operands;
+ public final List<Expression> operands;
- public CallExpression(SqlOperator op, List<LogicalExpression> operands) {
+ public CallExpression(SqlOperator op, List<Expression> operands) {
this.operands = operands;
opName = op.getName();
opSyntax = op.getSyntax();
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/DynamicParamExpression.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/DynamicParamExpression.java
similarity index 81%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/DynamicParamExpression.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/DynamicParamExpression.java
index 8019797..94b2b85 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/DynamicParamExpression.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/DynamicParamExpression.java
@@ -14,19 +14,20 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import org.apache.calcite.rel.type.RelDataType;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.type.DataType;
/**
*
*/
-public class DynamicParamExpression implements LogicalExpression {
- public final ExpDataType type;
+public class DynamicParamExpression implements Expression {
+ public final DataType type;
public final int index;
public DynamicParamExpression(RelDataType type, int index) {
- this.type = ExpDataType.fromType(type);
+ this.type = DataType.fromType(type);
this.index = index;
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpImplementor.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/ExpImplementor.java
similarity index 98%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpImplementor.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/ExpImplementor.java
index a76db0b..2997c7d 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpImplementor.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/ExpImplementor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
/**
*
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpToRexTranslator.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/ExpToRexTranslator.java
similarity index 94%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpToRexTranslator.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/ExpToRexTranslator.java
index 9b09ef0..946e483 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpToRexTranslator.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/ExpToRexTranslator.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import java.util.ArrayList;
import java.util.Collections;
@@ -54,7 +54,7 @@ public class ExpToRexTranslator implements
ExpImplementor<RexNode> {
this.ops = ops;
}
- public List<RexNode> translate(List<LogicalExpression> exps) {
+ public List<RexNode> translate(List<Expression> exps) {
if (F.isEmpty(exps))
return Collections.emptyList();
@@ -63,14 +63,14 @@ public class ExpToRexTranslator implements
ExpImplementor<RexNode> {
List<RexNode> res = new ArrayList<>(exps.size());
- for (LogicalExpression exp : exps) {
+ for (Expression exp : exps) {
res.add(exp.implement(this));
}
return res;
}
- public RexNode translate(LogicalExpression exp) {
+ public RexNode translate(Expression exp) {
return exp.implement(this);
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LogicalExpression.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/Expression.java
similarity index 92%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LogicalExpression.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/Expression.java
index bc8a5bc..7e92b6f 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LogicalExpression.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/Expression.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import java.io.Serializable;
/**
*
*/
-public interface LogicalExpression extends Serializable {
+public interface Expression extends Serializable {
<T> T implement(ExpImplementor<T> implementor);
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/InputRefExpression.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/InputRefExpression.java
similarity index 81%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/InputRefExpression.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/InputRefExpression.java
index 9a52eb3..b561b1e 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/InputRefExpression.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/InputRefExpression.java
@@ -14,19 +14,20 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import org.apache.calcite.rel.type.RelDataType;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.type.DataType;
/**
*
*/
-public class InputRefExpression implements LogicalExpression {
- public final ExpDataType type;
+public class InputRefExpression implements Expression {
+ public final DataType type;
public final int index;
public InputRefExpression(RelDataType type, int index) {
- this.type = ExpDataType.fromType(type);
+ this.type = DataType.fromType(type);
this.index = index;
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LiteralExpression.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/LiteralExpression.java
similarity index 82%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LiteralExpression.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/LiteralExpression.java
index 2dba7d1..038b142 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LiteralExpression.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/LiteralExpression.java
@@ -14,19 +14,20 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import org.apache.calcite.rel.type.RelDataType;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.type.DataType;
/**
*
*/
-public class LiteralExpression implements LogicalExpression {
- public final ExpDataType type;
+public class LiteralExpression implements Expression {
+ public final DataType type;
public final Comparable value;
public LiteralExpression(RelDataType type, Comparable value) {
- this.type = ExpDataType.fromType(type);
+ this.type = DataType.fromType(type);
this.value = value;
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LocalRefExpression.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/LocalRefExpression.java
similarity index 81%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LocalRefExpression.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/LocalRefExpression.java
index bc5a77e..e6023b8 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/LocalRefExpression.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/LocalRefExpression.java
@@ -14,19 +14,20 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import org.apache.calcite.rel.type.RelDataType;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.type.DataType;
/**
*
*/
-public class LocalRefExpression implements LogicalExpression {
- public final ExpDataType type;
+public class LocalRefExpression implements Expression {
+ public final DataType type;
public final int index;
public LocalRefExpression(RelDataType type, int index) {
- this.type = ExpDataType.fromType(type);
+ this.type = DataType.fromType(type);
this.index = index;
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RexToExpTranslator.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/RexToExpTranslator.java
similarity index 66%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RexToExpTranslator.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/RexToExpTranslator.java
index e2ff02a..22db0db 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RexToExpTranslator.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/expression/RexToExpTranslator.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package
org.apache.ignite.internal.processors.query.calcite.serialize.expression;
import java.util.ArrayList;
import java.util.List;
@@ -36,9 +36,9 @@ import org.apache.calcite.rex.RexVisitor;
/**
*
*/
-public class RexToExpTranslator implements RexVisitor<LogicalExpression> {
- public List<LogicalExpression> translate(List<RexNode> operands) {
- ArrayList<LogicalExpression> res = new ArrayList<>(operands.size());
+public class RexToExpTranslator implements RexVisitor<Expression> {
+ public List<Expression> translate(List<RexNode> operands) {
+ ArrayList<Expression> res = new ArrayList<>(operands.size());
for (RexNode operand : operands) {
res.add(translate(operand));
@@ -47,55 +47,55 @@ public class RexToExpTranslator implements
RexVisitor<LogicalExpression> {
return res;
}
- public LogicalExpression translate(RexNode rex) {
+ public Expression translate(RexNode rex) {
return rex.accept(this);
}
- @Override public LogicalExpression visitInputRef(RexInputRef inputRef) {
+ @Override public Expression visitInputRef(RexInputRef inputRef) {
return new InputRefExpression(inputRef.getType(), inputRef.getIndex());
}
- @Override public LogicalExpression visitLocalRef(RexLocalRef localRef) {
+ @Override public Expression visitLocalRef(RexLocalRef localRef) {
return new LocalRefExpression(localRef.getType(), localRef.getIndex());
}
- @Override public LogicalExpression visitLiteral(RexLiteral literal) {
+ @Override public Expression visitLiteral(RexLiteral literal) {
return new LiteralExpression(literal.getType(), literal.getValue());
}
- @Override public LogicalExpression visitCall(RexCall call) {
+ @Override public Expression visitCall(RexCall call) {
return new CallExpression(call.getOperator(),
translate(call.getOperands()));
}
- @Override public LogicalExpression visitOver(RexOver over) {
+ @Override public Expression visitOver(RexOver over) {
throw new UnsupportedOperationException();
}
- @Override public LogicalExpression visitCorrelVariable(RexCorrelVariable
correlVariable) {
+ @Override public Expression visitCorrelVariable(RexCorrelVariable
correlVariable) {
throw new UnsupportedOperationException();
}
- @Override public LogicalExpression visitDynamicParam(RexDynamicParam
dynamicParam) {
+ @Override public Expression visitDynamicParam(RexDynamicParam
dynamicParam) {
return new DynamicParamExpression(dynamicParam.getType(),
dynamicParam.getIndex());
}
- @Override public LogicalExpression visitRangeRef(RexRangeRef rangeRef) {
+ @Override public Expression visitRangeRef(RexRangeRef rangeRef) {
throw new UnsupportedOperationException();
}
- @Override public LogicalExpression visitFieldAccess(RexFieldAccess
fieldAccess) {
+ @Override public Expression visitFieldAccess(RexFieldAccess fieldAccess) {
throw new UnsupportedOperationException();
}
- @Override public LogicalExpression visitSubQuery(RexSubQuery subQuery) {
+ @Override public Expression visitSubQuery(RexSubQuery subQuery) {
throw new UnsupportedOperationException();
}
- @Override public LogicalExpression visitTableInputRef(RexTableInputRef
fieldRef) {
+ @Override public Expression visitTableInputRef(RexTableInputRef fieldRef) {
throw new UnsupportedOperationException();
}
- @Override public LogicalExpression visitPatternFieldRef(RexPatternFieldRef
fieldRef) {
+ @Override public Expression visitPatternFieldRef(RexPatternFieldRef
fieldRef) {
throw new UnsupportedOperationException();
}
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpDataType.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ConversionContext.java
similarity index 63%
copy from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpDataType.java
copy to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ConversionContext.java
index 4294854..19ccfc2 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpDataType.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ConversionContext.java
@@ -14,19 +14,23 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
-import java.io.Serializable;
-import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.plan.Context;
+import org.apache.calcite.plan.RelOptSchema;
+import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.rel.type.RelDataTypeFactory;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.ExpToRexTranslator;
/**
*
*/
-public interface ExpDataType extends Serializable {
- static ExpDataType fromType(RelDataType type) {
- return type.isStruct() ? StructType.fromType(type) :
SimpleType.fromType(type);
- }
+public interface ConversionContext extends RelOptTable.ToRelContext {
+ RelDataTypeFactory getTypeFactory();
- RelDataType toRelDataType(RelDataTypeFactory factory);
+ RelOptSchema getSchema();
+
+ Context getContext();
+
+ ExpToRexTranslator getExpressionTranslator();
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/FilterNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/FilterNode.java
similarity index 82%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/FilterNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/FilterNode.java
index 4c87ccc..82041d6 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/FilterNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/FilterNode.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.Arrays;
import java.util.List;
@@ -22,6 +22,8 @@ import java.util.stream.Collectors;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.CorrelationId;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteFilter;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.Expression;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.RexToExpTranslator;
import org.apache.ignite.internal.util.typedef.F;
/**
@@ -29,9 +31,9 @@ import org.apache.ignite.internal.util.typedef.F;
*/
public class FilterNode extends RelGraphNode {
private final int[] variables;
- private final LogicalExpression condition;
+ private final Expression condition;
- private FilterNode(LogicalExpression condition, int[] variables) {
+ private FilterNode(Expression condition, int[] variables) {
this.variables = variables;
this.condition = condition;
}
@@ -44,7 +46,7 @@ public class FilterNode extends RelGraphNode {
@Override public RelNode toRel(ConversionContext ctx, List<RelNode>
children) {
return IgniteFilter.create(
F.first(children),
- condition.implement(ctx.expressionTranslator()),
+ condition.implement(ctx.getExpressionTranslator()),
Arrays.stream(variables).mapToObj(CorrelationId::new).collect(Collectors.toSet()));
}
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/GraphToRelConverter.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/GraphToRelConverter.java
new file mode 100644
index 0000000..5de192a
--- /dev/null
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/GraphToRelConverter.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2019 GridGain Systems, Inc. and Contributors.
+ *
+ * Licensed under the GridGain Community Edition License (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
+
+import com.google.common.collect.ImmutableList;
+import java.util.List;
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.plan.Context;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptSchema;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelRoot;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.sql.SqlOperatorTable;
+import org.apache.calcite.tools.RelBuilder;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.ExpToRexTranslator;
+import org.apache.ignite.internal.util.typedef.F;
+
+/**
+ *
+ */
+public class GraphToRelConverter implements ConversionContext {
+ private final RelOptTable.ViewExpander viewExpander;
+ private final RelBuilder relBuilder;
+ private final ExpToRexTranslator expTranslator;
+
+ public GraphToRelConverter(RelOptTable.ViewExpander viewExpander,
RelBuilder relBuilder, SqlOperatorTable operatorTable) {
+ this.viewExpander = viewExpander;
+ this.relBuilder = relBuilder;
+
+ expTranslator = new ExpToRexTranslator(
+ relBuilder.getRexBuilder(),
+ getTypeFactory(),
+ operatorTable);
+ }
+
+ @Override public RelDataTypeFactory getTypeFactory() {
+ return getCluster().getTypeFactory();
+ }
+
+ @Override public RelOptSchema getSchema() {
+ return relBuilder.getRelOptSchema();
+ }
+
+ @Override public Context getContext() {
+ return getCluster().getPlanner().getContext();
+ }
+
+ @Override public ExpToRexTranslator getExpressionTranslator() {
+ return expTranslator;
+ }
+
+ @Override public RelOptCluster getCluster() {
+ return relBuilder.getCluster();
+ }
+
+ @Override public RelRoot expandView(RelDataType rowType, String
queryString, List<String> schemaPath, List<String> viewPath) {
+ return viewExpander.expandView(rowType, queryString, schemaPath,
viewPath);
+ }
+
+ public RelNode convert(RelGraph graph) {
+ return F.first(convertRecursive(this, graph, graph.nodes().subList(0,
1)));
+ }
+
+ private List<RelNode> convertRecursive(ConversionContext ctx, RelGraph
graph, List<Ord<RelGraphNode>> src) {
+ ImmutableList.Builder<RelNode> b = ImmutableList.builder();
+
+ for (Ord<RelGraphNode> node : src)
+ b.add(node.e.toRel(ctx, convertRecursive(ctx, graph,
graph.children(node.i))));
+
+ return b.build();
+ }
+}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/JoinNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/JoinNode.java
similarity index 80%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/JoinNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/JoinNode.java
index f08a928..587fb35 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/JoinNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/JoinNode.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.Arrays;
import java.util.List;
@@ -24,17 +24,19 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.CorrelationId;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoin;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.Expression;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.RexToExpTranslator;
/**
*
*/
public class JoinNode extends RelGraphNode {
- private final LogicalExpression condition;
+ private final Expression condition;
private final int[] variables;
private final JoinRelType joinType;
private final boolean semiDone;
- private JoinNode(RelTraitSet traits, LogicalExpression condition, int[]
variables, JoinRelType joinType, boolean semiDone) {
+ private JoinNode(RelTraitSet traits, Expression condition, int[]
variables, JoinRelType joinType, boolean semiDone) {
super(traits);
this.condition = condition;
this.variables = variables;
@@ -56,11 +58,11 @@ public class JoinNode extends RelGraphNode {
RelNode left = children.get(0);
RelNode right = children.get(1);
- return new IgniteJoin(ctx.cluster(),
- traitSet.toTraitSet(ctx.cluster()),
+ return new IgniteJoin(ctx.getCluster(),
+ traitSet.toTraitSet(ctx.getCluster()),
left,
right,
- ctx.expressionTranslator().translate(condition),
+ ctx.getExpressionTranslator().translate(condition),
Arrays.stream(variables).mapToObj(CorrelationId::new).collect(Collectors.toSet()),
joinType,
semiDone);
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ProjectNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ProjectNode.java
similarity index 69%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ProjectNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ProjectNode.java
index 07c2cf5..7a157df 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ProjectNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ProjectNode.java
@@ -14,33 +14,36 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.List;
import org.apache.calcite.rel.RelNode;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteProject;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.Expression;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.RexToExpTranslator;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.type.DataType;
import org.apache.ignite.internal.util.typedef.F;
/**
*
*/
public class ProjectNode extends RelGraphNode {
- private final List<LogicalExpression> projects;
- private final ExpDataType dataType;
+ private final List<Expression> projects;
+ private final DataType dataType;
- private ProjectNode(List<LogicalExpression> projects, ExpDataType
dataType) {
+ private ProjectNode(List<Expression> projects, DataType dataType) {
this.projects = projects;
this.dataType = dataType;
}
public static ProjectNode create(IgniteProject rel, RexToExpTranslator
rexTranslator) {
return new ProjectNode(rexTranslator.translate(rel.getProjects()),
- ExpDataType.fromType(rel.getRowType()));
+ DataType.fromType(rel.getRowType()));
}
@Override public RelNode toRel(ConversionContext ctx, List<RelNode>
children) {
return IgniteProject.create(F.first(children),
- ctx.expressionTranslator().translate(projects),
- dataType.toRelDataType(ctx.typeFactory()));
+ ctx.getExpressionTranslator().translate(projects),
+ dataType.toRelDataType(ctx.getTypeFactory()));
}
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ReceiverNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ReceiverNode.java
similarity index 73%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ReceiverNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ReceiverNode.java
index 93405cd..8b8a2c2 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ReceiverNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/ReceiverNode.java
@@ -14,33 +14,36 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.List;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import
org.apache.ignite.internal.processors.query.calcite.metadata.NodesMapping;
import org.apache.ignite.internal.processors.query.calcite.rel.Receiver;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.type.DataType;
/**
*
*/
public class ReceiverNode extends RelGraphNode {
- private final ExpDataType dataType;
+ private final DataType dataType;
private final NodesMapping sourceMapping;
- private ReceiverNode(RelTraitSet traits, ExpDataType dataType,
NodesMapping sourceMapping) {
+ private ReceiverNode(RelTraitSet traits, DataType dataType, NodesMapping
sourceMapping) {
super(traits);
this.dataType = dataType;
this.sourceMapping = sourceMapping;
}
public static ReceiverNode create(Receiver rel) {
- return new ReceiverNode(rel.getTraitSet(),
ExpDataType.fromType(rel.getRowType()), rel.sourceMapping());
+ return new ReceiverNode(rel.getTraitSet(),
DataType.fromType(rel.getRowType()), rel.sourceMapping());
}
@Override public RelNode toRel(ConversionContext ctx, List<RelNode>
children) {
- return new Receiver(ctx.cluster(), traitSet.toTraitSet(ctx.cluster()),
dataType.toRelDataType(ctx.typeFactory()), sourceMapping);
+ return new Receiver(ctx.getCluster(),
+ traitSet.toTraitSet(ctx.getCluster()),
+ dataType.toRelDataType(ctx.getTypeFactory()), sourceMapping);
}
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelGraph.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelGraph.java
similarity index 89%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelGraph.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelGraph.java
index c00837a..bb38efe 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelGraph.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelGraph.java
@@ -14,7 +14,9 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
+
+import org.apache.ignite.internal.processors.query.calcite.serialize.Graph;
/**
*
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelGraphNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelGraphNode.java
similarity index 92%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelGraphNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelGraphNode.java
index 055f814..ab53320 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelGraphNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelGraphNode.java
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.List;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
+import org.apache.ignite.internal.processors.query.calcite.serialize.GraphNode;
/**
*
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelToGraphConverter.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelToGraphConverter.java
similarity index 97%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelToGraphConverter.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelToGraphConverter.java
index 7de26c7..c3fb982 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/RelToGraphConverter.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/RelToGraphConverter.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.ArrayDeque;
import java.util.Collections;
@@ -28,6 +28,7 @@ import
org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableScan;
import org.apache.ignite.internal.processors.query.calcite.rel.Receiver;
import org.apache.ignite.internal.processors.query.calcite.rel.Sender;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.RexToExpTranslator;
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
import org.apache.ignite.internal.processors.query.calcite.util.RelImplementor;
import org.apache.ignite.internal.util.typedef.F;
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SenderNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/SenderNode.java
similarity index 99%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SenderNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/SenderNode.java
index e23b705..44e92bd 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SenderNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/SenderNode.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.List;
import org.apache.calcite.rel.RelNode;
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SerializedTraits.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/SerializedTraits.java
similarity index 99%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SerializedTraits.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/SerializedTraits.java
index 66583ed..b771bfe 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SerializedTraits.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/SerializedTraits.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.io.Serializable;
import java.util.ArrayList;
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/TableScanNode.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/TableScanNode.java
similarity index 93%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/TableScanNode.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/TableScanNode.java
index 3604f17..f9e4a8d 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/TableScanNode.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/relation/TableScanNode.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.relation;
import java.util.List;
import org.apache.calcite.rel.RelNode;
@@ -35,6 +35,6 @@ public class TableScanNode extends RelGraphNode {
}
@Override public RelNode toRel(ConversionContext ctx, List<RelNode>
children) {
- return ctx.schema().getTableForMember(tableName).toRel(ctx);
+ return ctx.getSchema().getTableForMember(tableName).toRel(ctx);
}
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpDataType.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/DataType.java
similarity index 90%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpDataType.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/DataType.java
index 4294854..317c95c 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/ExpDataType.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/DataType.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.type;
import java.io.Serializable;
import org.apache.calcite.rel.type.RelDataType;
@@ -23,8 +23,8 @@ import org.apache.calcite.rel.type.RelDataTypeFactory;
/**
*
*/
-public interface ExpDataType extends Serializable {
- static ExpDataType fromType(RelDataType type) {
+public interface DataType extends Serializable {
+ static DataType fromType(RelDataType type) {
return type.isStruct() ? StructType.fromType(type) :
SimpleType.fromType(type);
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SimpleType.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/SimpleType.java
similarity index 97%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SimpleType.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/SimpleType.java
index 54b7fb5..a5bb3f4 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/SimpleType.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/SimpleType.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.type;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
@@ -24,7 +24,7 @@ import org.apache.calcite.sql.type.SqlTypeName;
/**
*
*/
-public class SimpleType implements ExpDataType {
+public class SimpleType implements DataType {
private final Class clazz;
private final SqlTypeName typeName;
private final int precision;
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/StructType.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/StructType.java
similarity index 81%
rename from
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/StructType.java
rename to
modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/StructType.java
index e72b9dc..c712754 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/StructType.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/serialize/type/StructType.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query.calcite.serialize;
+package org.apache.ignite.internal.processors.query.calcite.serialize.type;
import java.util.LinkedHashMap;
import org.apache.calcite.rel.type.RelDataType;
@@ -24,22 +24,22 @@ import org.apache.calcite.rel.type.RelDataTypeField;
/**
*
*/
-public class StructType implements ExpDataType {
- private final LinkedHashMap<String, ExpDataType> fields;
+public class StructType implements DataType {
+ private final LinkedHashMap<String, DataType> fields;
static StructType fromType(RelDataType type) {
assert type.isStruct();
- LinkedHashMap<String, ExpDataType> fields = new LinkedHashMap<>();
+ LinkedHashMap<String, DataType> fields = new LinkedHashMap<>();
for (RelDataTypeField field : type.getFieldList()) {
- fields.put(field.getName(), ExpDataType.fromType(field.getType()));
+ fields.put(field.getName(), DataType.fromType(field.getType()));
}
return new StructType(fields);
}
- private StructType(LinkedHashMap<String, ExpDataType> fields) {
+ private StructType(LinkedHashMap<String, DataType> fields) {
this.fields = fields;
}
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/splitter/Fragment.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/splitter/Fragment.java
index 9fcbf93..86f58e9 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/splitter/Fragment.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/splitter/Fragment.java
@@ -34,13 +34,13 @@ import org.apache.ignite.internal.util.typedef.F;
*
*/
public class Fragment {
- private final RelNode rel;
+ private final RelNode root;
private NodesMapping mapping;
private ImmutableList<Fragment> remoteInputs;
- public Fragment(RelNode rel) {
- this.rel = rel;
+ public Fragment(RelNode root) {
+ this.root = root;
}
public void init(Context ctx, RelMetadataQuery mq) {
@@ -48,7 +48,7 @@ public class Fragment {
}
public RelNode root() {
- return rel;
+ return root;
}
public NodesMapping mapping() {
@@ -60,11 +60,11 @@ public class Fragment {
}
public boolean isRemote() {
- return rel instanceof Sender;
+ return root instanceof Sender;
}
private void init(Fragment parent, Context ctx, RelMetadataQuery mq) {
- FragmentInfo info = IgniteMdFragmentInfo.fragmentInfo(rel, mq);
+ FragmentInfo info = IgniteMdFragmentInfo.fragmentInfo(root, mq);
remoteInputs = info.remoteInputs();
@@ -82,7 +82,7 @@ public class Fragment {
if (parent != null) {
assert isRemote();
- ((Sender)rel).init(parent.mapping);
+ ((Sender) root).init(parent.mapping);
}
if (!F.isEmpty(remoteInputs)) {
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessorTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessorTest.java
index c6463dd..0180357 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessorTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessorTest.java
@@ -53,10 +53,10 @@ import
org.apache.ignite.internal.processors.query.calcite.rule.PlannerPhase;
import org.apache.ignite.internal.processors.query.calcite.rule.PlannerType;
import org.apache.ignite.internal.processors.query.calcite.schema.IgniteSchema;
import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
-import
org.apache.ignite.internal.processors.query.calcite.serialize.LogicalExpression;
-import org.apache.ignite.internal.processors.query.calcite.serialize.RelGraph;
-import
org.apache.ignite.internal.processors.query.calcite.serialize.RelToGraphConverter;
-import
org.apache.ignite.internal.processors.query.calcite.serialize.RexToExpTranslator;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.Expression;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.expression.RexToExpTranslator;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.relation.RelGraph;
+import
org.apache.ignite.internal.processors.query.calcite.serialize.relation.RelToGraphConverter;
import org.apache.ignite.internal.processors.query.calcite.splitter.QueryPlan;
import org.apache.ignite.internal.processors.query.calcite.splitter.Splitter;
import
org.apache.ignite.internal.processors.query.calcite.trait.DistributionTrait;
@@ -357,7 +357,7 @@ public class CalciteQueryProcessorTest extends
GridCommonAbstractTest {
Project proj = (Project) relRoot.rel.getInput(0);
- List<LogicalExpression> expressions =
translator.translate(proj.getProjects());
+ List<Expression> expressions =
translator.translate(proj.getProjects());
assertNotNull(expressions);
}