This is an automated email from the ASF dual-hosted git repository.

gvvinblade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 5fee450  Revert "IGNITE-12248: Apache Calcite based query execution 
engine."
5fee450 is described below

commit 5fee450b51561b86f14110a114eb3b479d728f6e
Author: Igor Seliverstov <gvvinbl...@gmail.com>
AuthorDate: Mon Sep 30 20:10:37 2019 +0300

    Revert "IGNITE-12248: Apache Calcite based query execution engine."
    
    This reverts commit bc807e87
---
 modules/calcite/README.txt                         |  35 --
 modules/calcite/pom.xml                            | 105 ------
 .../query/calcite/CalciteQueryProcessor.java       | 162 ---------
 .../query/calcite/prepare/DataContextImpl.java     |  75 ----
 .../calcite/prepare/DistributedExecution.java      | 114 -------
 .../query/calcite/prepare/IgnitePlanner.java       | 376 ---------------------
 .../query/calcite/prepare/IgniteSqlValidator.java  |  55 ---
 .../processors/query/calcite/prepare/Query.java    |  53 ---
 .../query/calcite/prepare/QueryExecution.java      |  28 --
 .../processors/query/calcite/rel/IgniteRel.java    |  38 ---
 .../query/calcite/rel/IgniteVisitor.java           |  25 --
 .../calcite/rel/logical/IgniteLogicalFilter.java   |  53 ---
 .../calcite/rel/logical/IgniteLogicalJoin.java     |  63 ----
 .../calcite/rel/logical/IgniteLogicalProject.java  |  42 ---
 .../rel/logical/IgniteLogicalTableScan.java        |  37 --
 .../processors/query/calcite/rule/IgniteRules.java | 175 ----------
 .../query/calcite/rule/PlannerPhase.java           |  49 ---
 .../processors/query/calcite/rule/PlannerType.java |  26 --
 .../calcite/rule/logical/IgniteFilterRule.java     |  56 ---
 .../query/calcite/rule/logical/IgniteJoinRule.java |  51 ---
 .../calcite/rule/logical/IgniteProjectRule.java    |  62 ----
 .../schema/CalciteSchemaChangeListener.java        |  64 ----
 .../query/calcite/schema/CalciteSchemaHolder.java  |  39 ---
 .../query/calcite/schema/IgniteSchema.java         |  87 -----
 .../query/calcite/schema/IgniteTable.java          |  87 -----
 .../query/calcite/schema/SchemaProvider.java       |  27 --
 .../query/calcite/schema/TableDescriptor.java      |  27 --
 .../processors/query/calcite/util/Commons.java     |  59 ----
 .../query/calcite/util/IgniteMethod.java           |  40 ---
 .../query/calcite/util/ListFieldsQueryCursor.java  |  92 -----
 .../query/calcite/util/ScanIterator.java           | 149 --------
 .../query/calcite/CalciteQueryProcessorTest.java   | 179 ----------
 .../ignite/testsuites/IgniteCalciteTestSuite.java  |  32 --
 .../ignite/internal/IgniteComponentType.java       |   8 -
 .../processors/query/GridQueryProcessor.java       |  31 +-
 .../processors/query/GridQueryTypeDescriptor.java  |   5 -
 .../internal/processors/query/QueryContext.java    |  73 ----
 .../internal/processors/query/QueryEngine.java     |  61 ----
 .../processors/query/QueryTypeDescriptorImpl.java  |   6 +-
 .../query/schema/SchemaChangeListener.java         |  35 --
 .../GridInternalSubscriptionProcessor.java         |  16 -
 .../processors/query/h2/SchemaManager.java         |  67 +---
 parent/pom.xml                                     |   1 -
 pom.xml                                            |   1 -
 44 files changed, 7 insertions(+), 2859 deletions(-)

diff --git a/modules/calcite/README.txt b/modules/calcite/README.txt
deleted file mode 100644
index e144a77..0000000
--- a/modules/calcite/README.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Apache Ignite Calcite Module
---------------------------
-
-Apache Ignite Calcite module provides experimental Apache Calcite based query 
engine.
-
-To enable Calcite module when starting a standalone node, move 
'optional/ignite-calcite' folder to
-'libs' folder before running 'ignite.{sh|bat}' script. The content of the 
module folder will
-be added to classpath in this case.
-
-Note: At now some logic from ignite-indexing module is reused, this means 
ignite-indexing module also
-has to be present at classpath.
-
-Importing Calcite Module In Maven Project
----------------------------------------
-
-If you are using Maven to manage dependencies of your project, you can add 
Calcite module
-dependency like this (replace '${ignite.version}' with actual Apache Ignite 
version you are
-interested in):
-
-<project xmlns="http://maven.apache.org/POM/4.0.0";
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
-                        http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    ...
-    <dependencies>
-        ...
-        <dependency>
-            <groupId>org.apache.ignite</groupId>
-            <artifactId>ignite-calcite</artifactId>
-            <version>${ignite.version}</version>
-        </dependency>
-        ...
-    </dependencies>
-    ...
-</project>
diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml
deleted file mode 100644
index 1fa26fa..0000000
--- a/modules/calcite/pom.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  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.
--->
-
-<!--
-    POM file.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.ignite</groupId>
-        <artifactId>ignite-parent</artifactId>
-        <version>1</version>
-        <relativePath>../../parent</relativePath>
-    </parent>
-
-    <artifactId>ignite-calcite</artifactId>
-    <version>2.8.0-SNAPSHOT</version>
-    <url>http://ignite.apache.org</url>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.ignite</groupId>
-            <artifactId>ignite-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <!--
-            At now the new calcite engine reuses some logic
-            and doesn't work without "old" indexing module.
-        -->
-        <dependency>
-            <groupId>org.apache.ignite</groupId>
-            <artifactId>ignite-indexing</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.calcite</groupId>
-            <artifactId>calcite-core</artifactId>
-            <version>${calcite.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.ignite</groupId>
-            <artifactId>ignite-core</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-            <version>${spring.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-beans</artifactId>
-            <version>${spring.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-            <version>${spring.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <!-- Generate the OSGi MANIFEST.MF for this bundle. -->
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-            </plugin>
-          </plugins>
-    </build>
-</project>
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
deleted file mode 100644
index 737f19b..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessor.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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;
-
-import java.util.Collections;
-import java.util.List;
-import org.apache.calcite.config.Lex;
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.plan.Contexts;
-import org.apache.calcite.plan.RelTraitDef;
-import org.apache.calcite.rel.type.RelDataTypeSystem;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.sql.fun.SqlLibrary;
-import org.apache.calcite.sql.fun.SqlLibraryOperatorTableFactory;
-import org.apache.calcite.sql.parser.SqlParser;
-import org.apache.calcite.tools.FrameworkConfig;
-import org.apache.calcite.tools.Frameworks;
-import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.cache.query.FieldsQueryCursor;
-import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.processors.query.IgniteSQLException;
-import org.apache.ignite.internal.processors.query.QueryContext;
-import org.apache.ignite.internal.processors.query.QueryEngine;
-import 
org.apache.ignite.internal.processors.query.calcite.prepare.DistributedExecution;
-import 
org.apache.ignite.internal.processors.query.calcite.prepare.IgnitePlanner;
-import org.apache.ignite.internal.processors.query.calcite.prepare.Query;
-import 
org.apache.ignite.internal.processors.query.calcite.prepare.QueryExecution;
-import 
org.apache.ignite.internal.processors.query.calcite.schema.CalciteSchemaChangeListener;
-import 
org.apache.ignite.internal.processors.query.calcite.schema.CalciteSchemaHolder;
-import org.apache.ignite.internal.processors.query.calcite.util.Commons;
-import 
org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor;
-import org.apache.ignite.resources.LoggerResource;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-/**
- *
- */
-public class CalciteQueryProcessor implements QueryEngine {
-    /** */
-    private final CalciteSchemaHolder schemaHolder = new CalciteSchemaHolder();
-
-    /** */
-    private final FrameworkConfig config;
-
-    /** */
-    private IgniteLogger log;
-
-    /** */
-    private GridKernalContext ctx;
-
-    public CalciteQueryProcessor() {
-        config = Frameworks.newConfigBuilder()
-            .parserConfig(SqlParser.configBuilder()
-                // Lexical configuration defines how identifiers are quoted, 
whether they are converted to upper or lower
-                // case when they are read, and whether identifiers are 
matched case-sensitively.
-                .setLex(Lex.MYSQL)
-                .build())
-            // Dialects support.
-            .operatorTable(SqlLibraryOperatorTableFactory.INSTANCE
-                .getOperatorTable(
-                    SqlLibrary.STANDARD,
-                    SqlLibrary.MYSQL))
-            // Context provides a way to store data within the planner session 
that can be accessed in planner rules.
-            .context(Contexts.of(this))
-            // Custom cost factory to use during optimization
-            .costFactory(null)
-            .typeSystem(RelDataTypeSystem.DEFAULT)
-            .build();
-    }
-
-    /**
-     * @param log Logger.
-     */
-    @LoggerResource
-    public void setLogger(IgniteLogger log) {
-        this.log = log;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void start(@NotNull GridKernalContext ctx) {
-        this.ctx = ctx;
-
-        GridInternalSubscriptionProcessor prc = 
ctx.internalSubscriptionProcessor();
-
-        if (prc != null) // Stubbed context doesn't have such processor
-            prc.registerSchemaChangeListener(new 
CalciteSchemaChangeListener(schemaHolder));
-    }
-
-    /** {@inheritDoc} */
-    @Override public void stop() {
-    }
-
-    @Override public List<FieldsQueryCursor<List<?>>> query(@Nullable 
QueryContext ctx, String query, Object... params) throws IgniteSQLException {
-        Context context = context(Commons.convert(ctx), query, params);
-        QueryExecution execution = prepare(context);
-        FieldsQueryCursor<List<?>> cur = execution.execute();
-        return Collections.singletonList(cur);
-    }
-
-    public FrameworkConfig config() {
-        return config;
-    }
-
-    public IgniteLogger log() {
-        return log;
-    }
-
-    public GridKernalContext context() {
-        return ctx;
-    }
-
-    /** */
-    public IgnitePlanner planner(RelTraitDef[] traitDefs, Context ctx) {
-        FrameworkConfig cfg = Frameworks.newConfigBuilder(config())
-                .defaultSchema(ctx.unwrap(SchemaPlus.class))
-                .traitDefs(traitDefs)
-                .context(ctx)
-                .build();
-
-        return new IgnitePlanner(cfg);
-    }
-
-    private QueryExecution prepare(Context ctx) {
-        return new DistributedExecution(ctx);
-    }
-
-    /**
-     * @param ctx External context.
-     * @param query Query string.
-     * @param params Query parameters.
-     * @return Query execution context.
-     */
-    Context context(@NotNull Context ctx, String query, Object[] params) { // 
Package private visibility for tests.
-        return Contexts.chain(
-            config.getContext(),
-            Contexts.of(schemaHolder.schema(), new Query(query, params)),
-            ctx);
-    }
-
-    /**
-     * @return Schema provider.
-     */
-    CalciteSchemaHolder schemaHolder() { // Package private visibility for 
tests.
-        return schemaHolder;
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/DataContextImpl.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/DataContextImpl.java
deleted file mode 100644
index 49b57ad..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/DataContextImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.prepare;
-
-import java.util.Map;
-import org.apache.calcite.DataContext;
-import org.apache.calcite.adapter.java.JavaTypeFactory;
-import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
-import org.apache.calcite.linq4j.QueryProvider;
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.schema.SchemaPlus;
-import 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor;
-
-/**
- *
- */
-class DataContextImpl implements DataContext {
-    /** */
-    private final JavaTypeFactoryImpl typeFactory;
-
-    /** */
-    private final SchemaPlus schema;
-
-    /** */
-    private final QueryProvider queryProvider;
-
-    /** */
-    private final Map<String, Object> params;
-
-    /**
-     * @param params Parameters.
-     * @param ctx Query context.
-     */
-    DataContextImpl(Map<String, Object> params, Context ctx) {
-        typeFactory = new 
JavaTypeFactoryImpl(ctx.unwrap(CalciteQueryProcessor.class).config().getTypeSystem());
-        schema = ctx.unwrap(SchemaPlus.class);
-        queryProvider = ctx.unwrap(QueryProvider.class);
-        this.params = params;
-    }
-
-    /** {@inheritDoc} */
-    @Override public SchemaPlus getRootSchema() {
-        return schema;
-    }
-
-    /** {@inheritDoc} */
-    @Override public JavaTypeFactory getTypeFactory() {
-        return typeFactory;
-    }
-
-    /** {@inheritDoc} */
-    @Override public QueryProvider getQueryProvider() {
-        return queryProvider;
-    }
-
-    /** {@inheritDoc} */
-    @Override public Object get(String name) {
-        return params.get(name);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/DistributedExecution.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/DistributedExecution.java
deleted file mode 100644
index 54ac726..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/DistributedExecution.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.prepare;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import org.apache.calcite.linq4j.Linq4j;
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.plan.ConventionTraitDef;
-import org.apache.calcite.plan.RelTraitDef;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelDistributionTraitDef;
-import org.apache.calcite.rel.RelDistributions;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.RelRoot;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.parser.SqlParseException;
-import org.apache.calcite.tools.ValidationException;
-import org.apache.ignite.cache.query.FieldsQueryCursor;
-import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
-import org.apache.ignite.internal.processors.query.IgniteSQLException;
-import 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor;
-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.util.ListFieldsQueryCursor;
-
-/**
- *
- */
-public class DistributedExecution implements QueryExecution {
-    /** */
-    private final Context ctx;
-
-    /**
-     * @param ctx Query context.
-     */
-    public DistributedExecution(Context ctx) {
-        this.ctx = ctx;
-    }
-
-    /** {@inheritDoc} */
-    @Override public FieldsQueryCursor<List<?>> execute() {
-        CalciteQueryProcessor proc = 
Objects.requireNonNull(ctx.unwrap(CalciteQueryProcessor.class));
-        Query query = Objects.requireNonNull(ctx.unwrap(Query.class));
-
-        RelTraitDef[] traitDefs = {
-            RelDistributionTraitDef.INSTANCE,
-            ConventionTraitDef.INSTANCE,
-            RelCollationTraitDef.INSTANCE
-        };
-
-        RelRoot relRoot;
-
-        try (IgnitePlanner planner = proc.planner(traitDefs, ctx)) {
-            // Parse
-            SqlNode sqlNode = planner.parse(query.sql());
-
-            // Validate
-            sqlNode = planner.validate(sqlNode);
-
-            // Convert to Relational operators graph
-            relRoot = planner.rel(sqlNode);
-
-            RelNode rel = relRoot.rel;
-
-            // Transformation chain
-            rel = planner.transform(PlannerType.HEP, 
PlannerPhase.SUBQUERY_REWRITE, rel, rel.getTraitSet());
-
-            RelTraitSet desired = rel.getTraitSet()
-                .replace(relRoot.collation)
-                .replace(IgniteRel.LOGICAL_CONVENTION)
-                .replace(RelDistributions.ANY)
-                .simplify();
-
-            rel = planner.transform(PlannerType.VOLCANO, PlannerPhase.LOGICAL, 
rel, desired);
-
-            relRoot = relRoot.withRel(rel).withKind(sqlNode.getKind());
-        } catch (SqlParseException | ValidationException e) {
-            String msg = "Failed to parse query.";
-
-            proc.log().error(msg, e);
-
-            throw new IgniteSQLException(msg, IgniteQueryErrorCode.PARSING, e);
-        } catch (Exception e) {
-            String msg = "Failed to create query execution graph.";
-
-            proc.log().error(msg, e);
-
-            throw new IgniteSQLException(msg, IgniteQueryErrorCode.UNKNOWN, e);
-        }
-
-        // TODO physical plan.
-
-        return new ListFieldsQueryCursor<>(relRoot.rel.getRowType(), 
Linq4j.emptyEnumerable(), Arrays::asList);
-    }
-}
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
deleted file mode 100644
index b9bb2ed..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.prepare;
-
-import com.google.common.collect.ImmutableList;
-import java.io.Reader;
-import java.util.List;
-import java.util.Properties;
-import org.apache.calcite.adapter.java.JavaTypeFactory;
-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.jdbc.JavaTypeFactoryImpl;
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptCostImpl;
-import org.apache.calcite.plan.RelOptPlanner;
-import org.apache.calcite.plan.RelOptRule;
-import org.apache.calcite.plan.RelOptTable;
-import org.apache.calcite.plan.RelTraitDef;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.plan.hep.HepPlanner;
-import org.apache.calcite.plan.hep.HepProgramBuilder;
-import org.apache.calcite.plan.volcano.VolcanoPlanner;
-import org.apache.calcite.prepare.CalciteCatalogReader;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.RelRoot;
-import org.apache.calcite.rel.RelShuttleImpl;
-import org.apache.calcite.rel.core.TableFunctionScan;
-import org.apache.calcite.rel.core.TableScan;
-import org.apache.calcite.rel.logical.LogicalValues;
-import org.apache.calcite.rel.metadata.DefaultRelMetadataProvider;
-import org.apache.calcite.rel.metadata.RelMetadataProvider;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeSystem;
-import org.apache.calcite.rex.RexBuilder;
-import org.apache.calcite.rex.RexExecutor;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.SqlOperatorTable;
-import org.apache.calcite.sql.parser.SqlParseException;
-import org.apache.calcite.sql.parser.SqlParser;
-import org.apache.calcite.sql.validate.SqlConformance;
-import org.apache.calcite.sql.validate.SqlValidator;
-import org.apache.calcite.sql2rel.RelDecorrelator;
-import org.apache.calcite.sql2rel.SqlRexConvertletTable;
-import org.apache.calcite.sql2rel.SqlToRelConverter;
-import org.apache.calcite.tools.FrameworkConfig;
-import org.apache.calcite.tools.Planner;
-import org.apache.calcite.tools.Program;
-import org.apache.calcite.tools.Programs;
-import org.apache.calcite.tools.RelBuilder;
-import org.apache.calcite.tools.RuleSet;
-import org.apache.calcite.tools.ValidationException;
-import org.apache.calcite.util.Pair;
-import org.apache.ignite.internal.processors.query.calcite.rule.PlannerPhase;
-import org.apache.ignite.internal.processors.query.calcite.rule.PlannerType;
-
-/**
- *
- */
-public class IgnitePlanner implements Planner, RelOptTable.ViewExpander {
-    private final SqlOperatorTable operatorTable;
-    private final ImmutableList<Program> programs;
-    private final FrameworkConfig frameworkConfig;
-    private final Context context;
-    private final CalciteConnectionConfig connectionConfig;
-    private final ImmutableList<RelTraitDef> traitDefs;
-    private final SqlParser.Config parserConfig;
-    private final SqlToRelConverter.Config sqlToRelConverterConfig;
-    private final SqlRexConvertletTable convertletTable;
-    private final RexExecutor executor;
-    private final SchemaPlus defaultSchema;
-    private final JavaTypeFactory typeFactory;
-    private final RelMetadataProvider metadataProvider;
-
-    private boolean open;
-
-    private RelOptPlanner planner;
-    private SqlValidator validator;
-
-    /**
-     * @param config Framework config.
-     */
-    public IgnitePlanner(FrameworkConfig config) {
-        frameworkConfig = config;
-        defaultSchema = config.getDefaultSchema();
-        operatorTable = config.getOperatorTable();
-        programs = config.getPrograms();
-        parserConfig = config.getParserConfig();
-        sqlToRelConverterConfig = config.getSqlToRelConverterConfig();
-        traitDefs = config.getTraitDefs();
-        convertletTable = config.getConvertletTable();
-        executor = config.getExecutor();
-        context = config.getContext();
-        connectionConfig = connConfig();
-        metadataProvider = DefaultRelMetadataProvider.INSTANCE; // TODO: right 
costs
-
-        RelDataTypeSystem typeSystem = connectionConfig
-            .typeSystem(RelDataTypeSystem.class, RelDataTypeSystem.DEFAULT);
-
-        typeFactory = new JavaTypeFactoryImpl(typeSystem);
-    }
-
-    private CalciteConnectionConfig connConfig() {
-        CalciteConnectionConfig unwrapped = 
context.unwrap(CalciteConnectionConfig.class);
-        if (unwrapped != null)
-            return unwrapped;
-
-        Properties properties = new Properties();
-        
properties.setProperty(CalciteConnectionProperty.CASE_SENSITIVE.camelName(),
-            String.valueOf(parserConfig.caseSensitive()));
-        
properties.setProperty(CalciteConnectionProperty.CONFORMANCE.camelName(),
-            String.valueOf(frameworkConfig.getParserConfig().conformance()));
-        return new CalciteConnectionConfigImpl(properties);
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelTraitSet getEmptyTraitSet() {
-        return planner.emptyTraitSet();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void close() {
-        reset();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void reset() {
-        planner = null;
-        validator = null;
-
-        open = false;
-    }
-
-    private void ready() {
-        if (!open) {
-            planner = new VolcanoPlanner(frameworkConfig.getCostFactory(), 
context);
-            planner.setExecutor(executor);
-
-            validator = new IgniteSqlValidator(operatorTable, 
createCatalogReader(), typeFactory, conformance());
-            validator.setIdentifierExpansion(true);
-
-            for (RelTraitDef def : traitDefs) {
-                planner.addRelTraitDef(def);
-            }
-
-            open = true;
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public SqlNode parse(Reader reader) throws SqlParseException {
-        return SqlParser.create(reader, parserConfig).parseStmt();
-    }
-
-    /** {@inheritDoc} */
-    @Override public SqlNode validate(SqlNode sqlNode) throws 
ValidationException {
-        ready();
-
-        try {
-            return validator.validate(sqlNode);
-        }
-        catch (RuntimeException e) {
-            throw new ValidationException(e);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public Pair<SqlNode, RelDataType> validateAndGetType(SqlNode 
sqlNode) throws ValidationException {
-        ready();
-
-        SqlNode validatedNode = validate(sqlNode);
-        RelDataType type = validator.getValidatedNodeType(validatedNode);
-        return Pair.of(validatedNode, type);
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelNode convert(SqlNode sql) {
-        return rel(sql).rel;
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelRoot rel(SqlNode sql) {
-        ready();
-
-        RexBuilder rexBuilder = createRexBuilder();
-        RelOptCluster cluster = RelOptCluster.create(planner, rexBuilder);
-        SqlToRelConverter.Config config = SqlToRelConverter.configBuilder()
-            .withConfig(sqlToRelConverterConfig)
-            .withTrimUnusedFields(false)
-            .withConvertTableAccess(false)
-            .build();
-        SqlToRelConverter sqlToRelConverter =
-            new SqlToRelConverter(this, validator, createCatalogReader(), 
cluster, convertletTable, config);
-        RelRoot root = sqlToRelConverter.convertQuery(sql, false, true);
-        root = root.withRel(sqlToRelConverter.flattenTypes(root.rel, true));
-        RelBuilder relBuilder = config.getRelBuilderFactory().create(cluster, 
null);
-        root = root.withRel(RelDecorrelator.decorrelateQuery(root.rel, 
relBuilder));
-        return root;
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelRoot expandView(RelDataType rowType, String 
queryString, List<String> schemaPath, List<String> viewPath) {
-        ready();
-
-        SqlParser parser = SqlParser.create(queryString, parserConfig);
-        SqlNode sqlNode;
-        try {
-            sqlNode = parser.parseQuery();
-        }
-        catch (SqlParseException e) {
-            throw new RuntimeException("parse failed", e);
-        }
-
-        SqlConformance conformance = conformance();
-        CalciteCatalogReader catalogReader =
-            createCatalogReader().withSchemaPath(schemaPath);
-        SqlValidator validator = new IgniteSqlValidator(operatorTable, 
catalogReader, typeFactory, conformance);
-        validator.setIdentifierExpansion(true);
-
-        RexBuilder rexBuilder = createRexBuilder();
-        RelOptCluster cluster = RelOptCluster.create(planner, rexBuilder);
-        SqlToRelConverter.Config config = SqlToRelConverter
-            .configBuilder()
-            .withConfig(sqlToRelConverterConfig)
-            .withTrimUnusedFields(false)
-            .withConvertTableAccess(false)
-            .build();
-        SqlToRelConverter sqlToRelConverter =
-            new SqlToRelConverter(this, validator,
-                catalogReader, cluster, convertletTable, config);
-
-        RelRoot root = sqlToRelConverter.convertQuery(sqlNode, true, false);
-        RelRoot root2 = root.withRel(sqlToRelConverter.flattenTypes(root.rel, 
true));
-        RelBuilder relBuilder = config.getRelBuilderFactory().create(cluster, 
null);
-        return root2.withRel(RelDecorrelator.decorrelateQuery(root.rel, 
relBuilder));
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelNode transform(int programIdx, RelTraitSet 
targetTraits, RelNode rel) {
-        ready();
-
-        RelTraitSet toTraits = targetTraits.simplify();
-
-        rel.accept(new MetaDataProviderModifier(metadataProvider));
-
-        return programs.get(programIdx).run(planner, rel, toTraits, 
ImmutableList.of(), ImmutableList.of());
-    }
-
-    public RelNode transform(PlannerType plannerType, PlannerPhase 
plannerPhase, RelNode input, RelTraitSet targetTraits)  {
-        ready();
-
-        RelTraitSet toTraits = targetTraits.simplify();
-        RuleSet rules = plannerPhase.getRules(context);
-
-        input.accept(new MetaDataProviderModifier(metadataProvider));
-
-        RelNode output;
-
-        switch (plannerType) {
-            case HEP:
-                final HepProgramBuilder programBuilder = new 
HepProgramBuilder();
-
-                for (RelOptRule rule : rules) {
-                    programBuilder.addRuleInstance(rule);
-                }
-
-                final HepPlanner hepPlanner =
-                    new HepPlanner(programBuilder.build(), context, true, 
null, RelOptCostImpl.FACTORY);
-
-                hepPlanner.setRoot(input);
-
-                if (!input.getTraitSet().equals(targetTraits))
-                    hepPlanner.changeTraits(input, toTraits);
-
-                output = hepPlanner.findBestExp();
-
-                break;
-            case VOLCANO:
-                Program program = Programs.of(rules);
-
-                output = program.run(planner, input, toTraits,
-                    ImmutableList.of(), ImmutableList.of());
-
-                break;
-            default:
-                throw new AssertionError("Unknown planner type: " + 
plannerType);
-        }
-
-        return output;
-    }
-
-    /** {@inheritDoc} */
-    @Override public JavaTypeFactory getTypeFactory() {
-        return typeFactory;
-    }
-
-    private SqlConformance conformance() {
-        return connectionConfig.conformance();
-    }
-
-    private RexBuilder createRexBuilder() {
-        return new RexBuilder(typeFactory);
-    }
-
-    private CalciteCatalogReader createCatalogReader() {
-        SchemaPlus rootSchema = rootSchema(defaultSchema);
-
-        return new CalciteCatalogReader(
-            CalciteSchema.from(rootSchema),
-            CalciteSchema.from(defaultSchema).path(null),
-            typeFactory, connectionConfig);
-    }
-
-    private static SchemaPlus rootSchema(SchemaPlus schema) {
-        for (; ; ) {
-            if (schema.getParentSchema() == null) {
-                return schema;
-            }
-            schema = schema.getParentSchema();
-        }
-    }
-
-    /** */
-    private static class MetaDataProviderModifier extends RelShuttleImpl {
-        /** */
-        private final RelMetadataProvider metadataProvider;
-
-        /** */
-        private MetaDataProviderModifier(RelMetadataProvider metadataProvider) 
{
-            this.metadataProvider = metadataProvider;
-        }
-
-        /** {@inheritDoc} */
-        @Override public RelNode visit(TableScan scan) {
-            scan.getCluster().setMetadataProvider(metadataProvider);
-            return super.visit(scan);
-        }
-
-        /** {@inheritDoc} */
-        @Override public RelNode visit(TableFunctionScan scan) {
-            scan.getCluster().setMetadataProvider(metadataProvider);
-            return super.visit(scan);
-        }
-
-        /** {@inheritDoc} */
-        @Override public RelNode visit(LogicalValues values) {
-            values.getCluster().setMetadataProvider(metadataProvider);
-            return super.visit(values);
-        }
-
-        /** {@inheritDoc} */
-        @Override protected RelNode visitChild(RelNode parent, int i, RelNode 
child) {
-            child.accept(this);
-            parent.getCluster().setMetadataProvider(metadataProvider);
-            return parent;
-        }
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
deleted file mode 100644
index 74bd1df..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.prepare;
-
-/**
- *
- */
-
-import org.apache.calcite.adapter.java.JavaTypeFactory;
-import org.apache.calcite.prepare.CalciteCatalogReader;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.sql.SqlInsert;
-import org.apache.calcite.sql.SqlOperatorTable;
-import org.apache.calcite.sql.validate.SqlConformance;
-import org.apache.calcite.sql.validate.SqlValidatorImpl;
-
-/** Validator. */
-public class IgniteSqlValidator extends SqlValidatorImpl {
-    public IgniteSqlValidator(SqlOperatorTable opTab,
-        CalciteCatalogReader catalogReader, JavaTypeFactory typeFactory,
-        SqlConformance conformance) {
-        super(opTab, catalogReader, typeFactory, conformance);
-    }
-
-    /** {@inheritDoc} */
-    @Override protected RelDataType getLogicalSourceRowType(
-        RelDataType sourceRowType, SqlInsert insert) {
-        final RelDataType superType =
-            super.getLogicalSourceRowType(sourceRowType, insert);
-        return ((JavaTypeFactory) typeFactory).toSql(superType);
-    }
-
-    /** {@inheritDoc} */
-    @Override protected RelDataType getLogicalTargetRowType(
-        RelDataType targetRowType, SqlInsert insert) {
-        final RelDataType superType =
-            super.getLogicalTargetRowType(targetRowType, insert);
-        return ((JavaTypeFactory) typeFactory).toSql(superType);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Query.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Query.java
deleted file mode 100644
index 92b974e..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Query.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.prepare;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.ignite.internal.util.typedef.F;
-
-/**
- *
- */
-public class Query {
-    private final String sql;
-    private final Object[] params;
-
-    public Query(String sql, Object[] params) {
-        this.sql = sql;
-        this.params = params;
-    }
-
-    public String sql() {
-        return sql;
-    }
-
-    public Object[] params() {
-        return params;
-    }
-
-    public Map<String, Object> params(Map<String, Object> stashed) {
-        Map<String, Object> res = new HashMap<>(stashed);
-        if (!F.isEmpty(params)) {
-            for (int i = 0; i < params.length; i++) {
-                res.put("?" + i, params[i]);
-            }
-        }
-        return res;
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/QueryExecution.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/QueryExecution.java
deleted file mode 100644
index bcfed58..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/QueryExecution.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.prepare;
-
-import java.util.List;
-import org.apache.ignite.cache.query.FieldsQueryCursor;
-
-/**
- *
- */
-public interface QueryExecution {
-    FieldsQueryCursor<List<?>> execute();
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRel.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRel.java
deleted file mode 100644
index 995ad70..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRel.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rel;
-
-import org.apache.calcite.plan.Convention;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-
-/**
- *
- */
-public interface IgniteRel extends RelNode {
-    Convention LOGICAL_CONVENTION = new Convention.Impl("IGNITE_LOGICAL", 
IgniteRel.class) {
-        /** */
-        @Override public boolean 
useAbstractConvertersForConversion(RelTraitSet fromTraits, RelTraitSet 
toTraits) {
-            return true; // Enables trait definition conversion
-        }
-    };
-
-    default void visit(IgniteVisitor visitor) {
-        visitor.visit(this);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteVisitor.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteVisitor.java
deleted file mode 100644
index a89c034..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteVisitor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rel;
-
-/**
- *
- */
-public interface IgniteVisitor {
-    public void visit(IgniteRel rel);
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalFilter.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalFilter.java
deleted file mode 100644
index 638cfb1..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalFilter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rel.logical;
-
-import java.util.Objects;
-import java.util.Set;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.RelWriter;
-import org.apache.calcite.rel.core.CorrelationId;
-import org.apache.calcite.rel.core.Filter;
-import org.apache.calcite.rex.RexNode;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-
-public final class IgniteLogicalFilter extends Filter implements IgniteRel {
-  private final Set<CorrelationId> variablesSet;
-
-  public IgniteLogicalFilter(RelOptCluster cluster, RelTraitSet traitSet, 
RelNode child,
-      RexNode condition, Set<CorrelationId> variablesSet) {
-    super(cluster, traitSet, child, condition);
-    this.variablesSet = Objects.requireNonNull(variablesSet);
-  }
-
-    @Override public Set<CorrelationId> getVariablesSet() {
-    return variablesSet;
-  }
-
-  @Override public IgniteLogicalFilter copy(RelTraitSet traitSet, RelNode 
input,
-      RexNode condition) {
-    return new IgniteLogicalFilter(getCluster(), traitSet, input, condition,
-        variablesSet);
-  }
-
-  @Override public RelWriter explainTerms(RelWriter pw) {
-    return super.explainTerms(pw)
-        .itemIf("variablesSet", variablesSet, !variablesSet.isEmpty());
-  }
-}
\ No newline at end of file
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalJoin.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalJoin.java
deleted file mode 100644
index 5abfc32..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalJoin.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rel.logical;
-
-import java.util.Set;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.RelWriter;
-import org.apache.calcite.rel.core.CorrelationId;
-import org.apache.calcite.rel.core.Join;
-import org.apache.calcite.rel.core.JoinRelType;
-import org.apache.calcite.rex.RexNode;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-
-public final class IgniteLogicalJoin extends Join implements IgniteRel {
-  private final boolean semiJoinDone;
-
-  public IgniteLogicalJoin(
-      RelOptCluster cluster,
-      RelTraitSet traitSet,
-      RelNode left,
-      RelNode right,
-      RexNode condition,
-      Set<CorrelationId> variablesSet,
-      JoinRelType joinType,
-      boolean semiJoinDone) {
-    super(cluster, traitSet, left, right, condition, variablesSet, joinType);
-    this.semiJoinDone = semiJoinDone;
-  }
-
-  @Override public IgniteLogicalJoin copy(RelTraitSet traitSet, RexNode 
conditionExpr,
-      RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) 
{
-    return new IgniteLogicalJoin(getCluster(),
-        getCluster().traitSetOf(IgniteRel.LOGICAL_CONVENTION), left, right, 
conditionExpr,
-        variablesSet, joinType, semiJoinDone);
-  }
-
-  @Override public RelWriter explainTerms(RelWriter pw) {
-    // Don't ever print semiJoinDone=false. This way, we
-    // don't clutter things up in optimizers that don't use semi-joins.
-    return super.explainTerms(pw)
-        .itemIf("semiJoinDone", semiJoinDone, semiJoinDone);
-  }
-
-  @Override public boolean isSemiJoinDone() {
-    return semiJoinDone;
-  }
-}
\ No newline at end of file
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalProject.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalProject.java
deleted file mode 100644
index 6f467a9..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalProject.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rel.logical;
-
-import java.util.List;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rex.RexNode;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-
-public final class IgniteLogicalProject extends Project implements IgniteRel {
-  public IgniteLogicalProject(
-      RelOptCluster cluster,
-      RelTraitSet traitSet,
-      RelNode input,
-      List<? extends RexNode> projects,
-      RelDataType rowType) {
-    super(cluster, traitSet, input, projects, rowType);
-  }
-
-    @Override public IgniteLogicalProject copy(RelTraitSet traitSet, RelNode 
input,
-      List<RexNode> projects, RelDataType rowType) {
-    return new IgniteLogicalProject(getCluster(), traitSet, input, projects, 
rowType);
-  }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalTableScan.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalTableScan.java
deleted file mode 100644
index 664e2db..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalTableScan.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rel.logical;
-
-import java.util.List;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptTable;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.TableScan;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-
-public final class IgniteLogicalTableScan extends TableScan implements 
IgniteRel {
-  public IgniteLogicalTableScan(RelOptCluster cluster, RelTraitSet traitSet,
-      RelOptTable table) {
-    super(cluster, traitSet, table);
-  }
-
-  @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
-    assert inputs.isEmpty();
-    return this;
-  }
-}
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
deleted file mode 100644
index 477b747..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IgniteRules.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rule;
-
-import com.google.common.collect.ImmutableList;
-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;
-import org.apache.calcite.rel.rules.AggregateProjectMergeRule;
-import org.apache.calcite.rel.rules.AggregateProjectPullUpConstantsRule;
-import org.apache.calcite.rel.rules.AggregateReduceFunctionsRule;
-import org.apache.calcite.rel.rules.AggregateRemoveRule;
-import org.apache.calcite.rel.rules.AggregateStarTableRule;
-import org.apache.calcite.rel.rules.AggregateValuesRule;
-import org.apache.calcite.rel.rules.CalcRemoveRule;
-import org.apache.calcite.rel.rules.DateRangeRules;
-import org.apache.calcite.rel.rules.ExchangeRemoveConstantKeysRule;
-import org.apache.calcite.rel.rules.FilterAggregateTransposeRule;
-import org.apache.calcite.rel.rules.FilterJoinRule;
-import org.apache.calcite.rel.rules.FilterMergeRule;
-import org.apache.calcite.rel.rules.FilterProjectTransposeRule;
-import org.apache.calcite.rel.rules.FilterTableScanRule;
-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;
-import org.apache.calcite.rel.rules.ProjectToWindowRule;
-import org.apache.calcite.rel.rules.ProjectWindowTransposeRule;
-import org.apache.calcite.rel.rules.PruneEmptyRules;
-import org.apache.calcite.rel.rules.ReduceExpressionsRule;
-import org.apache.calcite.rel.rules.SemiJoinRule;
-import org.apache.calcite.rel.rules.SortJoinTransposeRule;
-import org.apache.calcite.rel.rules.SortProjectTransposeRule;
-import org.apache.calcite.rel.rules.SortRemoveConstantKeysRule;
-import org.apache.calcite.rel.rules.SortRemoveRule;
-import org.apache.calcite.rel.rules.SortUnionTransposeRule;
-import org.apache.calcite.rel.rules.SubQueryRemoveRule;
-import org.apache.calcite.rel.rules.TableScanRule;
-import org.apache.calcite.rel.rules.UnionMergeRule;
-import org.apache.calcite.rel.rules.UnionPullUpConstantsRule;
-import org.apache.calcite.rel.rules.UnionToDistinctRule;
-import org.apache.calcite.rel.rules.ValuesReduceRule;
-import 
org.apache.ignite.internal.processors.query.calcite.rule.logical.IgniteFilterRule;
-import 
org.apache.ignite.internal.processors.query.calcite.rule.logical.IgniteJoinRule;
-import 
org.apache.ignite.internal.processors.query.calcite.rule.logical.IgniteProjectRule;
-
-/**
- *
- */
-public class IgniteRules {
-    public static final List<RelOptRule> BASE_RULES = ImmutableList.of(
-        AggregateStarTableRule.INSTANCE,
-        AggregateStarTableRule.INSTANCE2,
-        TableScanRule.INSTANCE,
-        ProjectMergeRule.INSTANCE,
-        FilterTableScanRule.INSTANCE,
-        ProjectFilterTransposeRule.INSTANCE,
-        FilterProjectTransposeRule.INSTANCE,
-        FilterJoinRule.FILTER_ON_JOIN,
-        JoinPushExpressionsRule.INSTANCE,
-        AggregateExpandDistinctAggregatesRule.INSTANCE,
-        AggregateReduceFunctionsRule.INSTANCE,
-        FilterAggregateTransposeRule.INSTANCE,
-        ProjectWindowTransposeRule.INSTANCE,
-        JoinCommuteRule.INSTANCE,
-        JoinPushThroughJoinRule.RIGHT,
-        JoinPushThroughJoinRule.LEFT,
-        SortProjectTransposeRule.INSTANCE,
-        SortJoinTransposeRule.INSTANCE,
-        SortRemoveConstantKeysRule.INSTANCE,
-        SortUnionTransposeRule.INSTANCE,
-        ExchangeRemoveConstantKeysRule.EXCHANGE_INSTANCE,
-        ExchangeRemoveConstantKeysRule.SORT_EXCHANGE_INSTANCE);
-
-    public static final List<RelOptRule> ABSTRACT_RULES = ImmutableList.of(
-        AggregateProjectPullUpConstantsRule.INSTANCE2,
-        UnionPullUpConstantsRule.INSTANCE,
-        PruneEmptyRules.UNION_INSTANCE,
-        PruneEmptyRules.INTERSECT_INSTANCE,
-        PruneEmptyRules.MINUS_INSTANCE,
-        PruneEmptyRules.PROJECT_INSTANCE,
-        PruneEmptyRules.FILTER_INSTANCE,
-        PruneEmptyRules.SORT_INSTANCE,
-        PruneEmptyRules.AGGREGATE_INSTANCE,
-        PruneEmptyRules.JOIN_LEFT_INSTANCE,
-        PruneEmptyRules.JOIN_RIGHT_INSTANCE,
-        PruneEmptyRules.SORT_FETCH_ZERO_INSTANCE,
-        UnionMergeRule.INSTANCE,
-        UnionMergeRule.INTERSECT_INSTANCE,
-        UnionMergeRule.MINUS_INSTANCE,
-        ProjectToWindowRule.PROJECT,
-        FilterMergeRule.INSTANCE,
-        DateRangeRules.FILTER_INSTANCE,
-        IntersectToDistinctRule.INSTANCE);
-
-    public static final List<RelOptRule> ABSTRACT_RELATIONAL_RULES = 
ImmutableList.of(
-        FilterJoinRule.FILTER_ON_JOIN,
-        FilterJoinRule.JOIN,
-        AbstractConverter.ExpandConversionRule.INSTANCE,
-        JoinCommuteRule.INSTANCE,
-        SemiJoinRule.PROJECT,
-        SemiJoinRule.JOIN,
-        AggregateRemoveRule.INSTANCE,
-        UnionToDistinctRule.INSTANCE,
-        ProjectRemoveRule.INSTANCE,
-        AggregateJoinTransposeRule.INSTANCE,
-        AggregateMergeRule.INSTANCE,
-        AggregateProjectMergeRule.INSTANCE,
-        CalcRemoveRule.INSTANCE,
-        SortRemoveRule.INSTANCE);
-
-    public static final List<RelOptRule> CONSTANT_REDUCTION_RULES = 
ImmutableList.of(
-        ReduceExpressionsRule.PROJECT_INSTANCE,
-        ReduceExpressionsRule.FILTER_INSTANCE,
-        ReduceExpressionsRule.CALC_INSTANCE,
-        ReduceExpressionsRule.WINDOW_INSTANCE,
-        ReduceExpressionsRule.JOIN_INSTANCE,
-        ValuesReduceRule.FILTER_INSTANCE,
-        ValuesReduceRule.PROJECT_FILTER_INSTANCE,
-        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,
-        SubQueryRemoveRule.JOIN);
-
-    public static final List<RelOptRule> IGNITE_BASE_RULES = ImmutableList.of(
-        IgniteFilterRule.INSTANCE,
-        IgniteProjectRule.INSTANCE,
-        IgniteJoinRule.INSTANCE
-    );
-
-    public static List<RelOptRule> logicalRules(Context ctx) {
-        return ImmutableList.<RelOptRule>builder()
-            .addAll(BASE_RULES)
-            .addAll(ABSTRACT_RULES)
-            .addAll(ABSTRACT_RELATIONAL_RULES)
-            .addAll(IGNITE_BASE_RULES)
-            .build();
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/PlannerPhase.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/PlannerPhase.java
deleted file mode 100644
index aa82187..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/PlannerPhase.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rule;
-
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.tools.RuleSet;
-import org.apache.calcite.tools.RuleSets;
-
-/**
- *
- */
-public enum PlannerPhase {
-    /** */
-    SUBQUERY_REWRITE("Sub-queries rewrites") {
-        @Override public RuleSet getRules(Context ctx) {
-            return RuleSets.ofList(IgniteRules.SUBQUERY_REWRITE_RULES);
-        }
-    },
-
-    /** */
-    LOGICAL("Logical planning") {
-        @Override public RuleSet getRules(Context ctx) {
-            return RuleSets.ofList(IgniteRules.logicalRules(ctx));
-        }
-    };
-
-    public final String description;
-
-    PlannerPhase(String description) {
-        this.description = description;
-    }
-
-    public abstract RuleSet getRules(Context ctx);
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/PlannerType.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/PlannerType.java
deleted file mode 100644
index a4a8db8..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/PlannerType.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rule;
-
-/**
- *
- */
-public enum PlannerType {
-    HEP,
-    VOLCANO;
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteFilterRule.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteFilterRule.java
deleted file mode 100644
index bdda595..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteFilterRule.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rule.logical;
-
-import org.apache.calcite.plan.Convention;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptRule;
-import org.apache.calcite.plan.RelOptRuleCall;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.RelFactories;
-import org.apache.calcite.rel.logical.LogicalFilter;
-import org.apache.calcite.rel.metadata.RelMdCollation;
-import org.apache.calcite.rel.metadata.RelMetadataQuery;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-import 
org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalFilter;
-
-/**
- *
- */
-public class IgniteFilterRule extends RelOptRule {
-    public static final RelOptRule INSTANCE = new IgniteFilterRule();
-
-    private IgniteFilterRule() {
-        super(operand(LogicalFilter.class, Convention.NONE, any()), 
RelFactories.LOGICAL_BUILDER, "IgniteFilterRule");
-    }
-
-    @Override public void onMatch(RelOptRuleCall call) {
-        LogicalFilter filter = call.rel(0);
-        final RelNode input = filter.getInput();
-        final RelOptCluster cluster = input.getCluster();
-        final RelMetadataQuery mq = cluster.getMetadataQuery();
-        final RelTraitSet traitSet = cluster.traitSet()
-            .replace(IgniteRel.LOGICAL_CONVENTION)
-            .replaceIfs(RelCollationTraitDef.INSTANCE,
-                () -> RelMdCollation.filter(mq, input));
-        RelNode convertedInput = convert(input, traitSet);
-        call.transformTo(new IgniteLogicalFilter(cluster, traitSet, 
convertedInput, filter.getCondition(), filter.getVariablesSet()));
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteJoinRule.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteJoinRule.java
deleted file mode 100644
index 44009a8..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteJoinRule.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rule.logical;
-
-import org.apache.calcite.plan.Convention;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptRule;
-import org.apache.calcite.plan.RelOptRuleCall;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.RelFactories;
-import org.apache.calcite.rel.logical.LogicalJoin;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-import 
org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalJoin;
-
-/**
- *
- */
-public class IgniteJoinRule extends RelOptRule {
-    public static final RelOptRule INSTANCE = new IgniteJoinRule();
-
-    public IgniteJoinRule() {
-        super(operand(LogicalJoin.class, Convention.NONE, any()), 
RelFactories.LOGICAL_BUILDER, "IgniteJoinRule");
-    }
-
-    @Override public void onMatch(RelOptRuleCall call) {
-        LogicalJoin join = call.rel(0);
-        RelOptCluster cluster = join.getCluster();
-        RelTraitSet traitSet = cluster.traitSet()
-            .replace(IgniteRel.LOGICAL_CONVENTION);
-        RelNode left = convert(join.getLeft(), traitSet);
-        RelNode right = convert(join.getRight(), traitSet);
-        call.transformTo(new IgniteLogicalJoin(cluster, traitSet, left, right,
-            join.getCondition(), join.getVariablesSet(), join.getJoinType(), 
join.isSemiJoinDone()));
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteProjectRule.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteProjectRule.java
deleted file mode 100644
index 043085f..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/IgniteProjectRule.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.rule.logical;
-
-import java.util.List;
-import org.apache.calcite.plan.Convention;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptRule;
-import org.apache.calcite.plan.RelOptRuleCall;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.RelFactories;
-import org.apache.calcite.rel.logical.LogicalProject;
-import org.apache.calcite.rel.metadata.RelMdCollation;
-import org.apache.calcite.rel.metadata.RelMetadataQuery;
-import org.apache.calcite.rex.RexNode;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-import 
org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalProject;
-
-/**
- *
- */
-public class IgniteProjectRule extends RelOptRule {
-    public static final RelOptRule INSTANCE = new IgniteProjectRule();
-
-    private  <R extends RelNode> IgniteProjectRule() {
-        super(operand(LogicalProject.class, Convention.NONE, any()), 
RelFactories.LOGICAL_BUILDER, "IgniteProjectRule");
-    }
-
-    @Override public void onMatch(RelOptRuleCall call) {
-        LogicalProject project = call.rel(0);
-        final RelNode input = project.getInput();
-        final RelOptCluster cluster = input.getCluster();
-        final List<? extends RexNode> projects = project.getProjects();
-        final RelMetadataQuery mq = cluster.getMetadataQuery();
-        final RelTraitSet traitSet =
-            cluster.traitSet()
-                .replace(IgniteRel.LOGICAL_CONVENTION)
-//                .replaceIf(RelDistributionTraitDef.INSTANCE,
-//                    () -> RelMdDistribution.project(mq, input, projects))
-                .replaceIfs(RelCollationTraitDef.INSTANCE,
-                    () -> RelMdCollation.project(mq, input, projects));
-        RelNode convertedInput = convert(input, traitSet);
-        call.transformTo(new IgniteLogicalProject(cluster, traitSet, 
convertedInput, projects, project.getRowType()));
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CalciteSchemaChangeListener.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CalciteSchemaChangeListener.java
deleted file mode 100644
index 67cca7c..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CalciteSchemaChangeListener.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.tools.Frameworks;
-import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
-import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
-import org.apache.ignite.internal.processors.query.schema.SchemaChangeListener;
-
-/**
- *
- */
-public class CalciteSchemaChangeListener implements SchemaChangeListener {
-    private final Map<String, IgniteSchema> schemas = new HashMap<>();
-    private final CalciteSchemaHolder schemaHolder;
-
-    public CalciteSchemaChangeListener(CalciteSchemaHolder schemaHolder) {
-        this.schemaHolder = schemaHolder;
-    }
-
-    @Override public synchronized void onSchemaCreate(String schemaName) {
-        schemas.putIfAbsent(schemaName, new IgniteSchema(schemaName));
-        rebuild();
-    }
-
-    @Override public synchronized void onSchemaDrop(String schemaName) {
-        schemas.remove(schemaName);
-        rebuild();
-    }
-
-    @Override public synchronized void onSqlTypeCreate(String schemaName, 
GridQueryTypeDescriptor typeDescriptor, GridCacheContextInfo cacheInfo) {
-        schemas.computeIfAbsent(schemaName, 
IgniteSchema::new).onSqlTypeCreate(typeDescriptor, cacheInfo);
-        rebuild();
-    }
-
-    @Override public synchronized void onSqlTypeDrop(String schemaName, 
GridQueryTypeDescriptor typeDescriptor, GridCacheContextInfo cacheInfo) {
-        schemas.computeIfAbsent(schemaName, 
IgniteSchema::new).onSqlTypeDrop(typeDescriptor, cacheInfo);
-        rebuild();
-    }
-
-    public void rebuild() {
-        SchemaPlus schema = Frameworks.createRootSchema(false);
-        schemas.forEach(schema::add);
-        schemaHolder.schema(schema);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CalciteSchemaHolder.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CalciteSchemaHolder.java
deleted file mode 100644
index 3978ae5..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/CalciteSchemaHolder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-import java.util.Objects;
-import org.apache.calcite.schema.SchemaPlus;
-
-/**
- *
- */
-public class CalciteSchemaHolder implements SchemaProvider {
-    private volatile SchemaPlus schema;
-
-    @Override public SchemaPlus schema() {
-        return Objects.requireNonNull(schema);
-    }
-
-    /**
-     * @param schema Calcite schema.
-     */
-    public void schema(SchemaPlus schema) {
-        this.schema = schema;
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java
deleted file mode 100644
index bf95938..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import org.apache.calcite.schema.Table;
-import org.apache.calcite.schema.impl.AbstractSchema;
-import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
-import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
-import org.apache.ignite.internal.processors.query.calcite.util.Commons;
-
-/**
- *
- */
-public class IgniteSchema extends AbstractSchema {
-    /** */
-    private final String schemaName;
-
-    /** */
-    private final Map<String, Table> tableMap = new ConcurrentHashMap<>();
-
-    public IgniteSchema(String schemaName) {
-        this.schemaName = schemaName;
-    }
-
-    public String getName() {
-        return schemaName;
-    }
-
-    @Override protected Map<String, Table> getTableMap() {
-        return Collections.unmodifiableMap(tableMap);
-    }
-
-    /**
-     * Callback method.
-     *
-     * @param typeDesc Query type descriptor.
-     * @param cacheInfo Cache info.
-     */
-    public void onSqlTypeCreate(GridQueryTypeDescriptor typeDesc, 
GridCacheContextInfo cacheInfo) {
-        IgniteTable table = new IgniteTable(typeDesc.tableName(), 
cacheInfo.name(), Commons.rowTypeFunction(typeDesc), null);
-
-        addTable(table.tableName(), table);
-    }
-
-    /**
-     * Callback method.
-     *
-     * @param typeDesc Query type descriptor.
-     * @param cacheInfo Cache info.
-     */
-    public void onSqlTypeDrop(GridQueryTypeDescriptor typeDesc, 
GridCacheContextInfo cacheInfo) {
-        removeTable(typeDesc.tableName());
-    }
-
-    /**
-     * @param name Table name.
-     * @param table Table.
-     */
-    public void addTable(String name, Table table) {
-        tableMap.put(name, table);
-    }
-
-    /**
-     * @param tableName Table name.
-     */
-    public void removeTable(String tableName) {
-        tableMap.remove(tableName);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
deleted file mode 100644
index 0bd4e51..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-import java.util.function.Function;
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptTable;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelDistributionTraitDef;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.schema.Statistic;
-import org.apache.calcite.schema.Statistics;
-import org.apache.calcite.schema.TranslatableTable;
-import org.apache.calcite.schema.impl.AbstractTable;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
-import 
org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalTableScan;
-import org.jetbrains.annotations.Nullable;
-
-/** */
-public class IgniteTable extends AbstractTable implements TranslatableTable {
-    private final String tableName;
-    private final String cacheName;
-    private final Function<RelDataTypeFactory, RelDataType> rowType;
-    private final Statistic statistic;
-
-
-    public IgniteTable(String tableName, String cacheName,
-        Function<RelDataTypeFactory, RelDataType> rowType, @Nullable Statistic 
statistic) {
-        this.tableName = tableName;
-        this.cacheName = cacheName;
-        this.rowType = rowType;
-
-        this.statistic = statistic == null ? Statistics.UNKNOWN : statistic;
-    }
-
-    /**
-     * @return Table name;
-     */
-    public String tableName() {
-        return tableName;
-    }
-
-    /**
-     * @return Cache name.
-     */
-    public String cacheName() {
-        return cacheName;
-    }
-
-    /** {@inheritDoc} */
-    @Override public Statistic getStatistic() {
-        return statistic;
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelDataType getRowType(RelDataTypeFactory typeFactory) {
-        return rowType.apply(typeFactory);
-    }
-
-    /** {@inheritDoc} */
-    @Override public RelNode toRel(RelOptTable.ToRelContext context, 
RelOptTable relOptTable) {
-        RelOptCluster cluster = context.getCluster();
-        RelTraitSet traitSet = cluster.traitSet()
-                .replace(IgniteRel.LOGICAL_CONVENTION)
-                .replaceIf(RelDistributionTraitDef.INSTANCE, () -> 
getStatistic().getDistribution())
-                .replaceIfs(RelCollationTraitDef.INSTANCE, () -> 
getStatistic().getCollations());
-        return new IgniteLogicalTableScan(cluster, traitSet, relOptTable);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaProvider.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaProvider.java
deleted file mode 100644
index 5fdd311..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-import org.apache.calcite.schema.SchemaPlus;
-
-/**
- *
- */
-public interface SchemaProvider {
-    SchemaPlus schema();
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/TableDescriptor.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/TableDescriptor.java
deleted file mode 100644
index 8c6cc61..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/TableDescriptor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-/**
- *
- */
-public interface TableDescriptor {
-    public boolean partitioned();
-
-    public boolean replicated();
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/Commons.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/Commons.java
deleted file mode 100644
index 8758eb2..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/Commons.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.util;
-
-import java.util.Map;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.plan.Contexts;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
-import org.apache.ignite.internal.processors.query.QueryContext;
-import org.apache.ignite.internal.processors.query.QueryUtils;
-
-/**
- *
- */
-public final class Commons {
-    private Commons(){}
-
-    public static Context convert(QueryContext ctx) {
-        return ctx == null ? Contexts.empty() : 
Contexts.of(ctx.unwrap(Object[].class));
-    }
-
-    public static <T> Predicate<T> any() {
-        return obj -> true;
-    }
-
-    /** */
-    public static Function<RelDataTypeFactory, RelDataType> 
rowTypeFunction(GridQueryTypeDescriptor desc) {
-        return (f) -> {
-            RelDataTypeFactory.Builder builder = new 
RelDataTypeFactory.Builder(f);
-
-            builder.add(QueryUtils.KEY_FIELD_NAME, 
f.createJavaType(desc.keyClass()));
-            builder.add(QueryUtils.VAL_FIELD_NAME, 
f.createJavaType(desc.valueClass()));
-
-            for (Map.Entry<String, Class<?>> prop : desc.fields().entrySet()) {
-                builder.add(prop.getKey(), f.createJavaType(prop.getValue()));
-            }
-            return builder.build();
-        };
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteMethod.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteMethod.java
deleted file mode 100644
index 1b88f00..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteMethod.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.util;
-
-import java.lang.reflect.Method;
-import org.apache.calcite.linq4j.tree.Types;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
-
-/**
- *
- */
-public enum IgniteMethod {
-    IGNITE_TABLE_ENUMERABLE(IgniteTable.class, "enumerable");
-
-    private final Method method;
-
-    IgniteMethod(Class clazz, String methodName, Class... argumentTypes) {
-        method = Types.lookupMethod(clazz, methodName, argumentTypes);
-    }
-
-    /** */
-    public Method method() {
-        return method;
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/ListFieldsQueryCursor.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/ListFieldsQueryCursor.java
deleted file mode 100644
index c46e762..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/ListFieldsQueryCursor.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.util;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
-import org.apache.calcite.linq4j.Enumerable;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.ignite.cache.query.FieldsQueryCursor;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.jetbrains.annotations.NotNull;
-
-/**
- *
- */
-public class ListFieldsQueryCursor<T> implements FieldsQueryCursor<List<?>> {
-    /** */
-    private final RelDataType rowType;
-
-    /** */
-    private final Enumerable<T> enumerable;
-
-    /** */
-    private final Function<T, List<?>> converter;
-
-    /** */
-    private Iterator<T> it;
-
-    /**
-     * @param rowType Row data type description.
-     * @param enumerable Rows source.
-     * @param converter Row converter.
-     */
-    public ListFieldsQueryCursor(RelDataType rowType, Enumerable<T> 
enumerable, Function<T, List<?>> converter) {
-        this.rowType = rowType;
-        this.enumerable = enumerable;
-        this.converter = converter;
-    }
-
-    /** {@inheritDoc} */
-    @Override public String getFieldName(int idx) {
-        return rowType.getFieldList().get(idx).getName();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getColumnsCount() {
-        return rowType.getFieldCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public List<List<?>> getAll() {
-        return StreamSupport.stream(enumerable.spliterator(), false)
-            .map(converter)
-            .collect(Collectors.toList());
-    }
-
-    /** {@inheritDoc} */
-    @Override public void close() {
-        closeIterator();
-    }
-
-    /** {@inheritDoc} */
-    @NotNull @Override public Iterator<List<?>> iterator() {
-        closeIterator();
-
-        return F.iterator(it = enumerable.iterator(), converter::apply, true);
-    }
-
-    private void closeIterator() {
-        if (it instanceof AutoCloseable)
-            U.closeQuiet((AutoCloseable)it);
-    }
-}
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/ScanIterator.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/ScanIterator.java
deleted file mode 100644
index 7d22d51..0000000
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/ScanIterator.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.util;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManager;
-import 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition;
-import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
-import org.apache.ignite.internal.processors.query.IgniteSQLException;
-import org.apache.ignite.internal.util.GridCloseableIteratorAdapter;
-import org.apache.ignite.internal.util.lang.GridCursor;
-
-import static 
org.apache.ignite.internal.processors.cache.GridCacheUtils.UNDEFINED_CACHE_ID;
-
-/**
- *
- */
-public class ScanIterator<T> extends GridCloseableIteratorAdapter<T> {
-    private final int cacheId;
-    private final Iterator<GridDhtLocalPartition> parts;
-    private final Function<CacheDataRow, T> typeWrapper;
-    private final Predicate<CacheDataRow> typeFilter;
-
-    /**
-     *
-     */
-    private GridCursor<? extends CacheDataRow> cur;
-    /**
-     *
-     */
-    private GridDhtLocalPartition curPart;
-
-    /**
-     *
-     */
-    private T next;
-
-    public ScanIterator(int cacheId, Iterator<GridDhtLocalPartition> parts, 
Function<CacheDataRow, T> typeWrapper,
-        Predicate<CacheDataRow> typeFilter) {
-        this.cacheId = cacheId;
-        this.parts = parts;
-        this.typeWrapper = typeWrapper;
-        this.typeFilter = typeFilter;
-    }
-
-    @Override
-    protected T onNext() {
-        if (next == null)
-            throw new NoSuchElementException();
-
-        T next = this.next;
-
-        this.next = null;
-
-        return next;
-    }
-
-    @Override
-    protected boolean onHasNext() throws IgniteCheckedException {
-        if (next != null)
-            return true;
-
-        while (true) {
-            if (cur == null) {
-                if (parts.hasNext()) {
-                    GridDhtLocalPartition part = parts.next();
-
-                    if (!reservePartition(part))
-                        throw new IgniteSQLException("Failed to reserve 
partition, please retry on stable topology.");
-
-                    IgniteCacheOffheapManager.CacheDataStore ds = 
part.dataStore();
-
-                    cur = cacheId == UNDEFINED_CACHE_ID ? ds.cursor() : 
ds.cursor(cacheId);
-                } else
-                    break;
-            }
-
-            if (cur.next()) {
-                CacheDataRow row = cur.get();
-
-                if (!typeFilter.test(row))
-                    continue;
-
-                next = typeWrapper.apply(row);
-
-                break;
-            } else {
-                cur = null;
-
-                releaseCurrentPartition();
-            }
-        }
-
-        return next != null;
-    }
-
-    /**
-     *
-     */
-    private void releaseCurrentPartition() {
-        GridDhtLocalPartition p = curPart;
-
-        assert p != null;
-
-        curPart = null;
-
-        p.release();
-    }
-
-    /**
-     *
-     */
-    private boolean reservePartition(GridDhtLocalPartition p) {
-        if (p != null && p.reserve()) {
-            curPart = p;
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override protected void onClose() {
-        if (curPart != null)
-            releaseCurrentPartition();
-    }
-}
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
deleted file mode 100644
index 76da7d3..0000000
--- 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/CalciteQueryProcessorTest.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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;
-
-
-import org.apache.calcite.plan.Context;
-import org.apache.calcite.plan.Contexts;
-import org.apache.calcite.plan.ConventionTraitDef;
-import org.apache.calcite.plan.RelTraitDef;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelDistributionTraitDef;
-import org.apache.calcite.rel.RelDistributions;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.RelRoot;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.tools.Frameworks;
-import 
org.apache.ignite.internal.processors.query.calcite.prepare.IgnitePlanner;
-import org.apache.ignite.internal.processors.query.calcite.prepare.Query;
-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.schema.IgniteSchema;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
-import org.apache.ignite.testframework.junits.GridTestKernalContext;
-import org.apache.ignite.testframework.junits.WithSystemProperty;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import static 
org.apache.ignite.internal.processors.query.QueryUtils.KEY_FIELD_NAME;
-import static 
org.apache.ignite.internal.processors.query.QueryUtils.VAL_FIELD_NAME;
-
-/**
- *
- */
-@WithSystemProperty(key = "calcite.debug", value = "true")
-public class CalciteQueryProcessorTest extends GridCommonAbstractTest {
-
-    private static CalciteQueryProcessor proc;
-
-    @BeforeClass
-    public static void setupClass() {
-        proc = new CalciteQueryProcessor();
-
-        proc.setLogger(log);
-        proc.start(new GridTestKernalContext(log));
-
-        IgniteSchema publicSchema = new IgniteSchema("PUBLIC");
-
-        publicSchema.addTable("Developer", new IgniteTable("Developer", 
"Developer", (f) -> {
-            RelDataTypeFactory.Builder builder = new 
RelDataTypeFactory.Builder(f);
-
-            builder.add(KEY_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add(VAL_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add("id", f.createJavaType(Integer.class));
-            builder.add("name", f.createJavaType(String.class));
-            builder.add("projectId", f.createJavaType(Integer.class));
-            builder.add("cityId", f.createJavaType(Integer.class));
-
-            return builder.build();
-        }, null));
-
-        publicSchema.addTable("Project", new IgniteTable("Project", "Project", 
(f) -> {
-            RelDataTypeFactory.Builder builder = new 
RelDataTypeFactory.Builder(f);
-
-            builder.add(KEY_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add(VAL_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add("id", f.createJavaType(Integer.class));
-            builder.add("name", f.createJavaType(String.class));
-            builder.add("ver", f.createJavaType(Integer.class));
-
-            return builder.build();
-        }, null));
-
-        publicSchema.addTable("Country", new IgniteTable("Country", "Country", 
(f) -> {
-            RelDataTypeFactory.Builder builder = new 
RelDataTypeFactory.Builder(f);
-
-            builder.add(KEY_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add(VAL_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add("id", f.createJavaType(Integer.class));
-            builder.add("name", f.createJavaType(String.class));
-            builder.add("countryCode", f.createJavaType(Integer.class));
-
-            return builder.build();
-        }, null));
-
-        publicSchema.addTable("City", new IgniteTable("City", "City", (f) -> {
-            RelDataTypeFactory.Builder builder = new 
RelDataTypeFactory.Builder(f);
-
-            builder.add(KEY_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add(VAL_FIELD_NAME, f.createJavaType(Integer.class));
-            builder.add("id", f.createJavaType(Integer.class));
-            builder.add("name", f.createJavaType(String.class));
-            builder.add("countryId", f.createJavaType(Integer.class));
-
-            return builder.build();
-        }, null));
-
-        SchemaPlus schema = Frameworks.createRootSchema(false);
-
-        schema.add("PUBLIC", publicSchema);
-
-        proc.schemaHolder().schema(schema);
-    }
-
-    @Test
-    public void testLogicalPlan() throws Exception {
-        String sql = "SELECT d.id, d.name, d.projectId, p.id0, p.ver0 " +
-            "FROM PUBLIC.Developer d JOIN (" +
-            "SELECT pp.id as id0, pp.ver as ver0 FROM PUBLIC.Project pp" +
-            ") p " +
-            "ON d.projectId = p.id0 " +
-            "WHERE (d.projectId + 1) > ?";
-
-        Context ctx = proc.context(Contexts.empty(), sql, new Object[]{2});
-
-        assertNotNull(ctx);
-
-        RelTraitDef[] traitDefs = {
-            RelDistributionTraitDef.INSTANCE,
-            ConventionTraitDef.INSTANCE,
-            RelCollationTraitDef.INSTANCE
-        };
-
-        RelRoot relRoot;
-
-        try (IgnitePlanner planner = proc.planner(traitDefs, ctx)){
-            assertNotNull(planner);
-
-            Query query = ctx.unwrap(Query.class);
-
-            assertNotNull(planner);
-
-            // Parse
-            SqlNode sqlNode = planner.parse(query.sql());
-
-            // Validate
-            sqlNode = planner.validate(sqlNode);
-
-            // Convert to Relational operators graph
-            relRoot = planner.rel(sqlNode);
-
-            RelNode rel = relRoot.rel;
-
-            // Transformation chain
-            rel = planner.transform(PlannerType.HEP, 
PlannerPhase.SUBQUERY_REWRITE, rel, rel.getTraitSet());
-
-            RelTraitSet desired = rel.getTraitSet()
-                .replace(relRoot.collation)
-                .replace(IgniteRel.LOGICAL_CONVENTION)
-                .replace(RelDistributions.ANY)
-                .simplify();
-
-            rel = planner.transform(PlannerType.VOLCANO, PlannerPhase.LOGICAL, 
rel, desired);
-
-            relRoot = relRoot.withRel(rel).withKind(sqlNode.getKind());
-        }
-
-        assertNotNull(relRoot);
-    }
-}
\ No newline at end of file
diff --git 
a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java
 
b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java
deleted file mode 100644
index 55a5925..0000000
--- 
a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.testsuites;
-
-import 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessorTest;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * Calcite tests.
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-    CalciteQueryProcessorTest.class
-    ,
-})
-public class IgniteCalciteTestSuite { }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
index 4b7a47e..5e65876 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal;
 import java.lang.reflect.Constructor;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.processors.compress.CompressionProcessor;
-import org.apache.ignite.internal.processors.query.QueryEngine;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.plugin.extensions.communication.MessageFactory;
@@ -98,13 +97,6 @@ public enum IgniteComponentType {
         CompressionProcessor.class.getName(),
         
"org.apache.ignite.internal.processors.compress.CompressionProcessorImpl",
         "ignite-compress"
-    ),
-
-    /** Experimental calcite based query engine. */
-    QUERY_ENGINE(
-        QueryEngine.NoOpQueryEngine.class.getName(),
-        
"org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor",
-        "ignite-calcite"
     );
 
     /** No-op class name. */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index b5ced01..dc64666 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -118,7 +118,6 @@ import org.jetbrains.annotations.Nullable;
 import static org.apache.ignite.events.EventType.EVT_CACHE_QUERY_EXECUTED;
 import static org.apache.ignite.internal.GridTopic.TOPIC_SCHEMA;
 import static org.apache.ignite.internal.IgniteComponentType.INDEXING;
-import static org.apache.ignite.internal.IgniteComponentType.QUERY_ENGINE;
 import static 
org.apache.ignite.internal.managers.communication.GridIoPolicy.SCHEMA_POOL;
 
 /**
@@ -152,9 +151,6 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     /** */
     private final @Nullable GridQueryIndexing idx;
 
-    /** */
-    private final @Nullable QueryEngine qryEngine;
-
     /** Value object context. */
     private final CacheQueryObjectValueContext valCtx;
 
@@ -214,18 +210,13 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     public GridQueryProcessor(GridKernalContext ctx) throws 
IgniteCheckedException {
         super(ctx);
 
-        boolean inBoundIndexingEnabled = false;
-
         if (idxCls != null) {
             idx = U.newInstance(idxCls);
 
             idxCls = null;
         }
         else
-            idx = (inBoundIndexingEnabled = INDEXING.inClassPath()) ? 
U.newInstance(INDEXING.className()) : null;
-
-        // At now experimental engine uses some logic of old one and cannot 
work separately.
-        qryEngine = inBoundIndexingEnabled ? QUERY_ENGINE.createOptional() : 
null;
+            idx = INDEXING.inClassPath() ? 
U.<GridQueryIndexing>newInstance(INDEXING.className()) : null;
 
         valCtx = new CacheQueryObjectValueContext(ctx);
 
@@ -248,14 +239,6 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     @Override public void start() throws IgniteCheckedException {
         super.start();
 
-        // Have to start engine first because it registers schema listeners 
which has
-        // to be notified at the time the indexing module registers schema 
objects
-        if (qryEngine != null) {
-            ctx.resource().injectGeneric(qryEngine);
-
-            qryEngine.start(ctx);
-        }
-
         if (idx != null) {
             ctx.resource().injectGeneric(idx);
 
@@ -706,18 +689,6 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     }
 
     /**
-     * @return Query engine.
-     * @throws IgniteException If module is not enabled.
-     */
-    public QueryEngine getQueryEngine() throws IgniteException {
-        if (qryEngine == null)
-            throw new IgniteException("Failed to execute query using 
experimental engine (consider adding module " +
-                QUERY_ENGINE.module() + " to classpath or moving it from 
'optional' to 'libs' folder).");
-
-        return qryEngine;
-    }
-
-    /**
      * Create type descriptors from schema and initialize indexing for given 
cache.<p>
      * Use with {@link #busyLock} where appropriate.
      * @param cacheInfo Cache context info.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
index be0c62b..6a40359 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryTypeDescriptor.java
@@ -83,11 +83,6 @@ public interface GridQueryTypeDescriptor {
     public GridQueryProperty property(String name);
 
     /**
-     * @return All properties.
-     */
-    public Map<String, GridQueryProperty> properties();
-
-    /**
      * Gets indexes for this type.
      *
      * @return Indexes for this type.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java
deleted file mode 100644
index 0a630e9..0000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.apache.ignite.internal.util.typedef.F;
-
-/** */
-public final class QueryContext {
-    /** */
-    private static final Object[] EMPTY = {};
-    /** */
-    private final Object[] params;
-
-    /** */
-    private QueryContext(Object[] params) {
-        this.params = params;
-    }
-
-    /**
-     * Finds an instance of an interface implemented by this object,
-     * or returns null if this object does not support that interface.
-     */
-    public <C> C unwrap(Class<C> aClass) {
-        if (Object[].class == aClass)
-            return aClass.cast(params);
-
-        return 
Arrays.stream(params).filter(aClass::isInstance).findFirst().map(aClass::cast).orElse(null);
-    }
-
-    /**
-     * @param params Context parameters.
-     * @return Query context.
-     */
-    public static QueryContext of(Object... params) {
-        return !F.isEmpty(params) ? new QueryContext(build(null, 
params).toArray()) : new QueryContext(EMPTY);
-    }
-
-    /** */
-    private static List<Object> build(List<Object> dst, Object[] src) {
-        if (dst == null)
-            dst = new ArrayList<>();
-
-        for (Object obj : src) {
-            if (obj == null)
-                continue;
-
-            if (obj.getClass() == QueryContext.class)
-                build(dst, ((QueryContext)obj).params);
-            else
-                dst.add(obj);
-        }
-
-        return dst;
-    }
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEngine.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEngine.java
deleted file mode 100644
index dd51c22..0000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEngine.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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;
-
-import java.util.Collections;
-import java.util.List;
-import org.apache.ignite.cache.query.FieldsQueryCursor;
-import org.apache.ignite.internal.GridKernalContext;
-import org.jetbrains.annotations.Nullable;
-
-/**
- *
- */
-public interface QueryEngine {
-    /** No op implementation. */
-    class NoOpQueryEngine implements QueryEngine {
-        /** {@inheritDoc}
-         * @param ctx*/
-        @Override public void start(GridKernalContext ctx) {}
-
-        /** {@inheritDoc} */
-        @Override public void stop() {}
-
-        /** {@inheritDoc} */
-        @Override public List<FieldsQueryCursor<List<?>>> query(@Nullable 
QueryContext ctx, String query, Object... params) throws IgniteSQLException {
-            return Collections.emptyList();
-        }
-    };
-
-    /**
-     * @param ctx Kernal context.
-     */
-    void start(GridKernalContext ctx);
-
-    /** */
-    void stop();
-
-    /**
-     * @param ctx Query context, may be null.
-     * @param query Query.
-     * @param params Optional query parameters.
-     * @return Query cursor.
-     * @throws IgniteSQLException If failed.
-     */
-    List<FieldsQueryCursor<List<?>>> query(@Nullable QueryContext ctx, String 
query, Object... params) throws IgniteSQLException;
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
index 6cd19d0..d39ec37 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryTypeDescriptorImpl.java
@@ -198,8 +198,10 @@ public class QueryTypeDescriptorImpl implements 
GridQueryTypeDescriptor {
         return res;
     }
 
-    /** {@inheritDoc} */
-    @Override public Map<String, GridQueryProperty> properties() {
+    /**
+     * @return Properties.
+     */
+    public Map<String, GridQueryProperty> properties() {
         return props;
     }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java
deleted file mode 100644
index 1a2cdc8..0000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.schema;
-
-import org.apache.ignite.internal.processors.cache.GridCacheContextInfo;
-import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
-
-/**
- *
- */
-public interface SchemaChangeListener {
-
-    void onSchemaCreate(String schemaName);
-
-    void onSchemaDrop(String schemaName);
-
-    void onSqlTypeCreate(String schemaName, GridQueryTypeDescriptor 
typeDescriptor, GridCacheContextInfo cacheInfo);
-
-    void onSqlTypeDrop(String schemaName, GridQueryTypeDescriptor 
typeDescriptor, GridCacheContextInfo cacheInfo);
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/subscription/GridInternalSubscriptionProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/subscription/GridInternalSubscriptionProcessor.java
index fc3d099..7f89ed1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/subscription/GridInternalSubscriptionProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/subscription/GridInternalSubscriptionProcessor.java
@@ -24,7 +24,6 @@ import 
org.apache.ignite.internal.processors.cache.persistence.DatabaseLifecycle
 import 
org.apache.ignite.internal.processors.cache.persistence.metastorage.MetastorageLifecycleListener;
 import 
org.apache.ignite.internal.processors.configuration.distributed.DistributedConfigurationLifecycleListener;
 import 
org.apache.ignite.internal.processors.metastorage.DistributedMetastorageLifecycleListener;
-import org.apache.ignite.internal.processors.query.schema.SchemaChangeListener;
 import org.jetbrains.annotations.NotNull;
 
 import static java.util.Objects.requireNonNull;
@@ -41,9 +40,6 @@ public class GridInternalSubscriptionProcessor extends 
GridProcessorAdapter {
     private final List<MetastorageLifecycleListener> metastorageListeners = 
new ArrayList<>();
 
     /** */
-    private final List<SchemaChangeListener> schemaChangeListeners = new 
ArrayList<>();
-
-    /** */
     private final List<DistributedMetastorageLifecycleListener> 
distributedMetastorageListeners = new ArrayList<>();
 
     /** */
@@ -74,18 +70,6 @@ public class GridInternalSubscriptionProcessor extends 
GridProcessorAdapter {
     }
 
     /** */
-    public void registerSchemaChangeListener(@NotNull SchemaChangeListener 
schemaChangeListener) {
-        requireNonNull(schemaChangeListener, "Schema change event subscriber 
should be not-null.");
-
-        schemaChangeListeners.add(schemaChangeListener);
-    }
-
-    /** */
-    public List<SchemaChangeListener> getSchemaChangeSubscribers() {
-        return schemaChangeListeners;
-    }
-
-    /** */
     public void registerDistributedMetastorageListener(@NotNull 
DistributedMetastorageLifecycleListener lsnr) {
         requireNonNull(lsnr, "Global metastorage subscriber should be 
not-null.");
 
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
index a94eaad..af01bad 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
@@ -61,7 +61,6 @@ import 
org.apache.ignite.internal.processors.query.h2.sys.view.SqlSystemViewQuer
 import 
org.apache.ignite.internal.processors.query.h2.sys.view.SqlSystemViewRunningQueries;
 import 
org.apache.ignite.internal.processors.query.h2.sys.view.SqlSystemViewSchemas;
 import 
org.apache.ignite.internal.processors.query.h2.sys.view.SqlSystemViewTables;
-import org.apache.ignite.internal.processors.query.schema.SchemaChangeListener;
 import 
org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitor;
 import org.apache.ignite.internal.util.GridConcurrentHashSet;
 import org.apache.ignite.internal.util.typedef.F;
@@ -73,9 +72,6 @@ import org.jetbrains.annotations.Nullable;
  * Schema manager. Responsible for all manipulations on schema objects.
  */
 public class SchemaManager {
-    /** */
-    private final SchemaChangeListener lsnr;
-
     /** Connection manager. */
     private final ConnectionManager connMgr;
 
@@ -102,14 +98,14 @@ public class SchemaManager {
 
     /**
      * Constructor.
-     *  @param ctx Kernal context.
+     *
+     * @param ctx Kernal context.
      * @param connMgr Connection manager.
      */
     public SchemaManager(GridKernalContext ctx, ConnectionManager connMgr) {
         this.ctx = ctx;
         this.connMgr = connMgr;
 
-        lsnr = schemaChangeListener(ctx);
         log = ctx.log(SchemaManager.class);
     }
 
@@ -265,7 +261,6 @@ public class SchemaManager {
             conn = 
connMgr.connectionForThread().connection(schema.schemaName());
 
             GridH2Table h2tbl = createTable(schema.schemaName(), schema, 
tblDesc, conn);
-            lsnr.onSqlTypeCreate(schemaName, type, cacheInfo);
 
             schema.add(tblDesc);
 
@@ -302,7 +297,6 @@ public class SchemaManager {
                     tbl.table().setRemoveIndexOnDestroy(rmvIdx);
 
                     dropTable(tbl);
-                    lsnr.onSqlTypeDrop(schemaName, tbl.type(), 
tbl.cacheInfo());
                 }
                 catch (Exception e) {
                     U.error(log, "Failed to drop table on cache stop (will 
ignore): " + tbl.fullTableName(), e);
@@ -368,7 +362,6 @@ public class SchemaManager {
      */
     private void createSchema0(String schema) throws IgniteCheckedException {
         connMgr.executeSystemStatement("CREATE SCHEMA IF NOT EXISTS " + 
H2Utils.withQuotes(schema));
-        lsnr.onSchemaCreate(schema);
 
         if (log.isDebugEnabled())
             log.debug("Created H2 schema for index database: " + schema);
@@ -533,7 +526,6 @@ public class SchemaManager {
      */
     private void dropSchema(String schema) throws IgniteCheckedException {
         connMgr.executeSystemStatement("DROP SCHEMA IF EXISTS " + 
H2Utils.withQuotes(schema));
-        lsnr.onSchemaDrop(schema);
 
         if (log.isDebugEnabled())
             log.debug("Dropped H2 schema for index database: " + schema);
@@ -774,59 +766,4 @@ public class SchemaManager {
 
         return null;
     }
-
-    /** */
-    private SchemaChangeListener schemaChangeListener(GridKernalContext ctx) {
-        List<SchemaChangeListener> subscribers = new 
ArrayList<>(ctx.internalSubscriptionProcessor().getSchemaChangeSubscribers());
-
-        if (F.isEmpty(subscribers))
-            return new NoOpSchemaChangeListener();
-
-        return subscribers.size() == 1 ? subscribers.get(0) : new 
CompoundSchemaChangeListener(subscribers);
-    }
-
-    /** */
-    private static final class NoOpSchemaChangeListener implements 
SchemaChangeListener {
-        /** {@inheritDoc} */
-        @Override public void onSchemaCreate(String schemaName) {}
-
-        /** {@inheritDoc} */
-        @Override public void onSchemaDrop(String schemaName) {}
-
-        /** {@inheritDoc} */
-        @Override public void onSqlTypeCreate(String schemaName, 
GridQueryTypeDescriptor typeDescriptor, GridCacheContextInfo cacheInfo) {}
-
-        /** {@inheritDoc} */
-        @Override public void onSqlTypeDrop(String schemaName, 
GridQueryTypeDescriptor typeDescriptor, GridCacheContextInfo cacheInfo) {}
-    }
-
-    /** */
-    private static final class CompoundSchemaChangeListener implements 
SchemaChangeListener {
-        /** */
-        private final List<SchemaChangeListener> lsnrs;
-
-        private CompoundSchemaChangeListener(List<SchemaChangeListener> lsnrs) 
{
-            this.lsnrs = lsnrs;
-        }
-
-        /** {@inheritDoc} */
-        @Override public void onSchemaCreate(String schemaName) {
-            lsnrs.forEach(lsnr -> lsnr.onSchemaCreate(schemaName));
-        }
-
-        /** {@inheritDoc} */
-        @Override public void onSchemaDrop(String schemaName) {
-            lsnrs.forEach(lsnr -> lsnr.onSchemaCreate(schemaName));
-        }
-
-        /** {@inheritDoc} */
-        @Override public void onSqlTypeCreate(String schemaName, 
GridQueryTypeDescriptor typeDescriptor, GridCacheContextInfo cacheInfo) {
-            lsnrs.forEach(lsnr -> lsnr.onSqlTypeCreate(schemaName, 
typeDescriptor, cacheInfo));
-        }
-
-        /** {@inheritDoc} */
-        @Override public void onSqlTypeDrop(String schemaName, 
GridQueryTypeDescriptor typeDescriptor, GridCacheContextInfo cacheInfo) {
-            lsnrs.forEach(lsnr -> lsnr.onSqlTypeDrop(schemaName, 
typeDescriptor, cacheInfo));
-        }
-    }
 }
diff --git a/parent/pom.xml b/parent/pom.xml
index 3605ecd..2d5dce7 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -139,7 +139,6 @@
         <zookeeper.version>3.5.5</zookeeper.version>
         <zstd.version>1.3.7-2</zstd.version>
         <opencensus.version>0.22.0</opencensus.version>
-        <calcite.version>1.20.0</calcite.version>
 
 
         <!-- Maven plugins versions -->
diff --git a/pom.xml b/pom.xml
index 019e6c9..dbeeda8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,6 @@
         <module>modules/ml/tensorflow-model-parser</module>
         <module>modules/tensorflow</module>
         <module>modules/opencensus</module>
-        <module>modules/calcite</module>
     </modules>
 
     <profiles>

Reply via email to