You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2026/10/14 10:04:27 UTC

(ignite) branch master updated: IGNITE-29117 Calcite default SQL engine (#13670)

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

nizhikov 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 ffcc62b7752 IGNITE-29117 Calcite default SQL engine (#13670)
ffcc62b7752 is described below

commit ffcc62b7752e36d21bc9a0b7d9809421a78bfeb7
Author: Nikolay <ni...@apache.org>
AuthorDate: Wed Oct 14 13:04:20 2026 +0300

    IGNITE-29117 Calcite default SQL engine (#13670)
---
 assembly/dependencies-apache-ignite-lgpl.xml       |   5 +-
 assembly/dependencies-apache-ignite-slim.xml       |   5 +-
 assembly/dependencies-apache-ignite.xml            |   5 +-
 assembly/libs/README.txt                           |   3 +-
 examples/pom-standalone-lgpl.xml                   |   6 +
 examples/pom-standalone.xml                        |   6 +
 modules/calcite-testing/README.txt                 |   4 +
 modules/calcite-testing/pom.xml                    | 180 +++++++++++++++++++++
 .../AbstractMultiEngineIntegrationTest.java        |   0
 .../query/calcite/integration/CacheStoreTest.java  |   0
 .../integration/KeyClassChangeIntegrationTest.java |   0
 .../QueryEngineConfigurationIntegrationTest.java   |   0
 .../integration/ResultSetSizeMetricsTest.java      |   0
 .../integration/SqlPlanHistoryIntegrationTest.java |   0
 .../integration/TimeoutIntegrationTest.java        |   0
 .../calcite/integration/ViewsIntegrationTest.java  |   0
 .../query/calcite/jdbc/JdbcCrossEngineTest.java    |   0
 .../query/calcite/thin/MultiLineQueryTest.java     |   0
 .../tx/TxWithExceptionalInterceptorTest.java       |   0
 .../ignite/testsuites/CalciteAndH2TestSuite.java   |  50 ++++++
 modules/calcite/pom.xml                            |   9 --
 .../ignite/testsuites/IntegrationTestSuite.java    |  18 ---
 .../apache/ignite/testsuites/JdbcTestSuite.java    |   2 -
 .../persistence/IgnitePdsCorruptedIndexTest.java   |   0
 pom.xml                                            |   1 +
 25 files changed, 258 insertions(+), 36 deletions(-)

diff --git a/assembly/dependencies-apache-ignite-lgpl.xml b/assembly/dependencies-apache-ignite-lgpl.xml
index 3f8607f940a..51754b12f58 100644
--- a/assembly/dependencies-apache-ignite-lgpl.xml
+++ b/assembly/dependencies-apache-ignite-lgpl.xml
@@ -33,7 +33,7 @@
         <moduleSet>
             <includes>
                 <include>${project.groupId}:ignite-spring</include>
-                <include>${project.groupId}:ignite-indexing</include>
+                <include>${project.groupId}:ignite-calcite</include>
                 <include>${project.groupId}:ignite-control-utility</include>
             </includes>
             <sources>
@@ -129,7 +129,7 @@
                 <exclude>${project.groupId}:ignite-extdata-uri-dep</exclude>
                 <exclude>${project.groupId}:ignite-extdata-pluggable</exclude>
                 <exclude>${project.groupId}:ignite-examples</exclude>
-                <exclude>${project.groupId}:ignite-indexing</exclude>
+                <exclude>${project.groupId}:ignite-calcite</exclude>
                 <exclude>${project.groupId}:ignite-codegen</exclude>
                 <exclude>${project.groupId}:ignite-appserver-test</exclude>
                 <exclude>${project.groupId}:ignite-websphere-test</exclude>
@@ -137,6 +137,7 @@
                 <exclude>${project.groupId}:ignite-dev-utils</exclude>
                 <exclude>${project.groupId}:ignite-extdata-platform</exclude>
                 <exclude>${project.groupId}:ignite-compatibility</exclude>
+                <exclude>${project.groupId}:ignite-calcite-testing</exclude>
                 <exclude>${project.groupId}:ignite-sqlline</exclude>
                 <exclude>${project.groupId}:ignite-control-utility</exclude>
                 <exclude>${project.groupId}:ignite-checkstyle</exclude>
diff --git a/assembly/dependencies-apache-ignite-slim.xml b/assembly/dependencies-apache-ignite-slim.xml
index 9a7e188bf3e..68cfd59abbc 100644
--- a/assembly/dependencies-apache-ignite-slim.xml
+++ b/assembly/dependencies-apache-ignite-slim.xml
@@ -33,7 +33,7 @@
         <moduleSet>
             <includes>
                 <include>${project.groupId}:ignite-spring</include>
-                <include>${project.groupId}:ignite-indexing</include>
+                <include>${project.groupId}:ignite-calcite</include>
                 <include>${project.groupId}:ignite-control-utility</include>
             </includes>
             <sources>
@@ -129,7 +129,7 @@
                 <exclude>${project.groupId}:ignite-extdata-uri-dep</exclude>
                 <exclude>${project.groupId}:ignite-extdata-pluggable</exclude>
                 <exclude>${project.groupId}:ignite-examples</exclude>
-                <exclude>${project.groupId}:ignite-indexing</exclude>
+                <exclude>${project.groupId}:ignite-calcite</exclude>
                 <exclude>${project.groupId}:ignite-codegen</exclude>
                 <exclude>${project.groupId}:ignite-schedule</exclude>
                 <exclude>${project.groupId}:ignite-appserver-test</exclude>
@@ -138,6 +138,7 @@
                 <exclude>${project.groupId}:ignite-dev-utils</exclude>
                 <exclude>${project.groupId}:ignite-extdata-platform</exclude>
                 <exclude>${project.groupId}:ignite-compatibility</exclude>
+                <exclude>${project.groupId}:ignite-calcite-testing</exclude>
                 <exclude>${project.groupId}:ignite-sqlline</exclude>
                 <!-- Removed from slim packaging are: -->
                 <exclude>${project.groupId}:ignite-direct-io</exclude>
diff --git a/assembly/dependencies-apache-ignite.xml b/assembly/dependencies-apache-ignite.xml
index 5de904de148..cc6b475b106 100644
--- a/assembly/dependencies-apache-ignite.xml
+++ b/assembly/dependencies-apache-ignite.xml
@@ -33,7 +33,7 @@
         <moduleSet>
             <includes>
                 <include>${project.groupId}:ignite-spring</include>
-                <include>${project.groupId}:ignite-indexing</include>
+                <include>${project.groupId}:ignite-calcite</include>
                 <include>${project.groupId}:ignite-control-utility</include>
             </includes>
             <sources>
@@ -130,7 +130,7 @@
                 <exclude>${project.groupId}:ignite-extdata-uri-dep</exclude>
                 <exclude>${project.groupId}:ignite-extdata-pluggable</exclude>
                 <exclude>${project.groupId}:ignite-examples</exclude>
-                <exclude>${project.groupId}:ignite-indexing</exclude>
+                <exclude>${project.groupId}:ignite-calcite</exclude>
                 <exclude>${project.groupId}:ignite-codegen</exclude>
                 <exclude>${project.groupId}:ignite-schedule</exclude>
                 <exclude>${project.groupId}:ignite-appserver-test</exclude>
@@ -139,6 +139,7 @@
                 <exclude>${project.groupId}:ignite-dev-utils</exclude>
                 <exclude>${project.groupId}:ignite-extdata-platform</exclude>
                 <exclude>${project.groupId}:ignite-compatibility</exclude>
+                <exclude>${project.groupId}:ignite-calcite-testing</exclude>
                 <exclude>${project.groupId}:ignite-sqlline</exclude>
                 <exclude>${project.groupId}:ignite-control-utility</exclude>
                 <exclude>${project.groupId}:ignite-checkstyle</exclude>
diff --git a/assembly/libs/README.txt b/assembly/libs/README.txt
index 760fe6c39b4..d120afdcc9d 100644
--- a/assembly/libs/README.txt
+++ b/assembly/libs/README.txt
@@ -71,7 +71,8 @@ Here is how it can be imported into your POM file:
 All optional modules can be imported just like the core module, but with different artifact IDs.
 
 The following modules are available:
-- ignite-indexing (for SQL querying and indexing)
+- ignite-calcite (for SQL querying)
+- ignite-indexing (legacy module for SQL querying and indexing)
 - ignite-jcl (for Apache Commons logging)
 - ignite-jta (for XA integration)
 - ignite-log4j2 (for Log4j 2 logging)
diff --git a/examples/pom-standalone-lgpl.xml b/examples/pom-standalone-lgpl.xml
index 22f06f48449..750fb12cdeb 100644
--- a/examples/pom-standalone-lgpl.xml
+++ b/examples/pom-standalone-lgpl.xml
@@ -79,6 +79,12 @@
             <version>to_be_replaced_by_ignite_version</version>
         </dependency>
 
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-calcite</artifactId>
+            <version>to_be_replaced_by_ignite_version</version>
+        </dependency>
+
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>ignite-opencensus</artifactId>
diff --git a/examples/pom-standalone.xml b/examples/pom-standalone.xml
index 22f06f48449..750fb12cdeb 100644
--- a/examples/pom-standalone.xml
+++ b/examples/pom-standalone.xml
@@ -79,6 +79,12 @@
             <version>to_be_replaced_by_ignite_version</version>
         </dependency>
 
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-calcite</artifactId>
+            <version>to_be_replaced_by_ignite_version</version>
+        </dependency>
+
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>ignite-opencensus</artifactId>
diff --git a/modules/calcite-testing/README.txt b/modules/calcite-testing/README.txt
new file mode 100644
index 00000000000..3c955946a6f
--- /dev/null
+++ b/modules/calcite-testing/README.txt
@@ -0,0 +1,4 @@
+Apache Ignite Calcite Testing Module
+------------------------------------
+
+Contains the tests that require both SQL engines, Calcite ('ignite-calcite') and H2 ('ignite-indexing').
\ No newline at end of file
diff --git a/modules/calcite-testing/pom.xml b/modules/calcite-testing/pom.xml
new file mode 100644
index 00000000000..ab7ed13e5f2
--- /dev/null
+++ b/modules/calcite-testing/pom.xml
@@ -0,0 +1,180 @@
+<?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-internal</artifactId>
+        <version>${revision}</version>
+        <relativePath>../../parent-internal/pom.xml</relativePath>
+    </parent>
+
+    <!--
+        Tests that require both SQL engines (Calcite and H2) on the classpath. The tests of the ignite-calcite module
+        itself run without the H2 engine (ignite-indexing).
+    -->
+    <artifactId>ignite-calcite-testing</artifactId>
+
+    <properties>
+        <junit.version>6.1.3</junit.version>
+    </properties>
+
+    <url>https://ignite.apache.org</url>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.junit</groupId>
+                <artifactId>junit-bom</artifactId>
+                <version>${junit.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-calcite</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-indexing</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-calcite</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-core</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>ignite-tools</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>${spring.version}</version>
+            <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>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j2-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest</artifactId>
+            <version>${hamcrest.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite-api</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-engine</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-suite-engine</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- Runs the tests that still inherit JUnit 4 test methods from ignite-core test classes. -->
+        <dependency>
+            <groupId>org.junit.vintage</groupId>
+            <artifactId>junit-vintage-engine</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractMultiEngineIntegrationTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractMultiEngineIntegrationTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractMultiEngineIntegrationTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractMultiEngineIntegrationTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CacheStoreTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CacheStoreTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CacheStoreTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/CacheStoreTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/KeyClassChangeIntegrationTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/KeyClassChangeIntegrationTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/KeyClassChangeIntegrationTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/KeyClassChangeIntegrationTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryEngineConfigurationIntegrationTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryEngineConfigurationIntegrationTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryEngineConfigurationIntegrationTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/QueryEngineConfigurationIntegrationTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ResultSetSizeMetricsTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ResultSetSizeMetricsTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ResultSetSizeMetricsTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ResultSetSizeMetricsTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlPlanHistoryIntegrationTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlPlanHistoryIntegrationTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlPlanHistoryIntegrationTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlPlanHistoryIntegrationTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TimeoutIntegrationTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TimeoutIntegrationTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TimeoutIntegrationTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TimeoutIntegrationTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/thin/MultiLineQueryTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/thin/MultiLineQueryTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/thin/MultiLineQueryTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/query/calcite/thin/MultiLineQueryTest.java
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/tx/TxWithExceptionalInterceptorTest.java b/modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/tx/TxWithExceptionalInterceptorTest.java
similarity index 100%
rename from modules/calcite/src/test/java/org/apache/ignite/internal/processors/tx/TxWithExceptionalInterceptorTest.java
rename to modules/calcite-testing/src/test/java/org/apache/ignite/internal/processors/tx/TxWithExceptionalInterceptorTest.java
diff --git a/modules/calcite-testing/src/test/java/org/apache/ignite/testsuites/CalciteAndH2TestSuite.java b/modules/calcite-testing/src/test/java/org/apache/ignite/testsuites/CalciteAndH2TestSuite.java
new file mode 100644
index 00000000000..df0f4114243
--- /dev/null
+++ b/modules/calcite-testing/src/test/java/org/apache/ignite/testsuites/CalciteAndH2TestSuite.java
@@ -0,0 +1,50 @@
+/*
+ * 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.integration.CacheStoreTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.KeyClassChangeIntegrationTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.QueryEngineConfigurationIntegrationTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.ResultSetSizeMetricsTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.SqlPlanHistoryIntegrationTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.TimeoutIntegrationTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.ViewsIntegrationTest;
+import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcCrossEngineTest;
+import org.apache.ignite.internal.processors.query.calcite.thin.MultiLineQueryTest;
+import org.apache.ignite.internal.processors.tx.TxWithExceptionalInterceptorTest;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
+
+/**
+ * Tests that require both SQL engines on the classpath: Calcite and H2 ('indexing').
+ */
+@Suite
+@SelectClasses({
+    JdbcCrossEngineTest.class,
+    MultiLineQueryTest.class,
+    TimeoutIntegrationTest.class,
+    TxWithExceptionalInterceptorTest.class,
+    CacheStoreTest.class,
+    KeyClassChangeIntegrationTest.class,
+    ViewsIntegrationTest.class,
+    ResultSetSizeMetricsTest.class,
+    QueryEngineConfigurationIntegrationTest.class,
+    SqlPlanHistoryIntegrationTest.class,
+})
+public class CalciteAndH2TestSuite {
+}
diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml
index c63689bd5ae..9db4be3f023 100644
--- a/modules/calcite/pom.xml
+++ b/modules/calcite/pom.xml
@@ -69,15 +69,6 @@
             <artifactId>ignite-core</artifactId>
         </dependency>
 
-        <!--
-            Indexing is required for cross-engines tests.
-        -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>ignite-indexing</artifactId>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
             <groupId>com.thoughtworks.xstream</groupId>
             <artifactId>xstream</artifactId>
diff --git a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java
index 6cfa81743f9..39f01f6db55 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java
@@ -28,7 +28,6 @@ import org.apache.ignite.internal.processors.query.calcite.SqlFieldsQueryUsageTe
 import org.apache.ignite.internal.processors.query.calcite.integration.AggregatesIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.AuthorizationIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.BulkOperationDeadlockIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.CacheStoreTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.CacheWithInterceptorIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.CalciteBasicSecondaryIndexIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.CalciteErrorHandlilngIntegrationTest;
@@ -52,7 +51,6 @@ import org.apache.ignite.internal.processors.query.calcite.integration.IndexSpoo
 import org.apache.ignite.internal.processors.query.calcite.integration.IntervalTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.JoinIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.KeepBinaryIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.KeyClassChangeIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.KillCommandDdlIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.KillQueryCommandDdlIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.LimitOffsetIntegrationTest;
@@ -65,11 +63,9 @@ import org.apache.ignite.internal.processors.query.calcite.integration.Operators
 import org.apache.ignite.internal.processors.query.calcite.integration.PartitionPruneTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.PartitionsReservationIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.QueryBlockingTaskExecutorIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.QueryEngineConfigurationIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.QueryMetadataIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.QueryWithPartitionsIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.RecursiveCteIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.ResultSetSizeMetricsTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.RunningQueriesIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.ScalarInIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.SelectByKeyFieldTest;
@@ -78,21 +74,18 @@ import org.apache.ignite.internal.processors.query.calcite.integration.ServerSta
 import org.apache.ignite.internal.processors.query.calcite.integration.SetOpIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.SortAggregateIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.SqlDiagnosticIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.SqlPlanHistoryIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.StatisticsCommandDdlIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.StdSqlOperatorsTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.SystemColumnsScanTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.SystemViewsIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.TableDdlIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.TableDmlIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.TimeoutIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.UnnestIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.UnstableTopologyIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.UserDdlIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.UserDefinedFunctionsIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.UserDefinedFunctionsIntegrationTransactionalTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.UserDefinedTxAwareFunctionsIntegrationTest;
-import org.apache.ignite.internal.processors.query.calcite.integration.ViewsIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.WindowIntegrationTest;
 import org.apache.ignite.internal.processors.query.calcite.integration.tpch.TpchScale001Test;
 import org.apache.ignite.internal.processors.query.calcite.integration.tpch.TpchScale010Test;
@@ -102,9 +95,7 @@ import org.apache.ignite.internal.processors.query.calcite.rules.JoinCommuteRule
 import org.apache.ignite.internal.processors.query.calcite.rules.JoinOrderOptimizationTest;
 import org.apache.ignite.internal.processors.query.calcite.rules.OrToUnionRuleTest;
 import org.apache.ignite.internal.processors.query.calcite.rules.ProjectScanMergeRuleTest;
-import org.apache.ignite.internal.processors.query.calcite.thin.MultiLineQueryTest;
 import org.apache.ignite.internal.processors.tx.TxThreadLockingTest;
-import org.apache.ignite.internal.processors.tx.TxWithExceptionalInterceptorTest;
 import org.junit.platform.suite.api.SelectClasses;
 import org.junit.platform.suite.api.Suite;
 
@@ -156,7 +147,6 @@ import org.junit.platform.suite.api.Suite;
     CorrelatesIntegrationTest.class,
     SystemViewsIntegrationTest.class,
     IndexRebuildIntegrationTest.class,
-    QueryEngineConfigurationIntegrationTest.class,
     IndexMultiRangeScanIntegrationTest.class,
     KeepBinaryIntegrationTest.class,
     LocalQueryIntegrationTest.class,
@@ -166,17 +156,13 @@ import org.junit.platform.suite.api.Suite;
     LocalDateTimeSupportTest.class,
     DynamicParametersIntegrationTest.class,
     ExpiredEntriesIntegrationTest.class,
-    TimeoutIntegrationTest.class,
     PartitionPruneTest.class,
     DistributedJoinIntegrationTest.class,
     IndexWithSameNameCalciteTest.class,
     AuthorizationIntegrationTest.class,
     DdlTransactionCalciteSelfTest.class,
-    MultiLineQueryTest.class,
-    ViewsIntegrationTest.class,
     OperatorsExtensionIntegrationTest.class,
     SessionContextSqlFunctionTest.class,
-    SqlPlanHistoryIntegrationTest.class,
     QueryBlockingTaskExecutorIntegrationTest.class,
     ScalarInIntegrationTest.class,
     TpchScale001Test.class,
@@ -185,11 +171,8 @@ import org.junit.platform.suite.api.Suite;
     UnnestIntegrationTest.class,
     CalciteOnlyNodeIntegrationTest.class,
     CalcitePlanningDumpTest.class,
-    KeyClassChangeIntegrationTest.class,
     QueryEntityValueColumnAliasTest.class,
-    CacheStoreTest.class,
     MultiDcQueryMappingTest.class,
-    TxWithExceptionalInterceptorTest.class,
     UserDefinedTxAwareFunctionsIntegrationTest.class,
     CacheWithInterceptorIntegrationTest.class,
     TxThreadLockingTest.class,
@@ -200,7 +183,6 @@ import org.junit.platform.suite.api.Suite;
     SystemColumnsScanTest.class,
     BulkOperationDeadlockIntegrationTest.class,
     SelectForUpdateIntegrationTest.class,
-    ResultSetSizeMetricsTest.class,
 })
 public class IntegrationTestSuite {
 }
diff --git a/modules/calcite/src/test/java/org/apache/ignite/testsuites/JdbcTestSuite.java b/modules/calcite/src/test/java/org/apache/ignite/testsuites/JdbcTestSuite.java
index 2e2a21ff770..f956e729e2a 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/testsuites/JdbcTestSuite.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/testsuites/JdbcTestSuite.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.testsuites;
 
 import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcConnectionEnabledPropertyTest;
-import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcCrossEngineTest;
 import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcLocalFlagTest;
 import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcQueryTest;
 import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcSetClientInfoCacheInterceptorTest;
@@ -34,7 +33,6 @@ import org.junit.platform.suite.api.Suite;
 @Suite
 @SelectClasses({
     JdbcQueryTest.class,
-    JdbcCrossEngineTest.class,
     JdbcThinConnectionSavepointTest.class,
     JdbcThinTransactionalSelfTest.class,
     JdbcSetClientInfoTest.class,
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCorruptedIndexTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCorruptedIndexTest.java
similarity index 100%
rename from modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCorruptedIndexTest.java
rename to modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCorruptedIndexTest.java
diff --git a/pom.xml b/pom.xml
index 87b2221d8c3..320d2bc72e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,7 @@
         <module>modules/opencensus</module>
         <module>modules/control-utility</module>
         <module>modules/calcite</module>
+        <module>modules/calcite-testing</module>
         <module>modules/compatibility</module>
     </modules>