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);
     }

Reply via email to