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

amashenkov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 16579052aa IGNITE-18625 Sql. Code cleanup. Unmute tests. (#1590)
16579052aa is described below

commit 16579052aa07fd0f75f36cda96e1d1cc03049a4f
Author: Andrew V. Mashenkov <[email protected]>
AuthorDate: Wed Feb 1 16:28:34 2023 +0300

    IGNITE-18625 Sql. Code cleanup. Unmute tests. (#1590)
---
 .../ignite/internal/index/IndexManagerTest.java    |  16 +--
 .../ignite/jdbc/ItJdbcResultSetSelfTest.java       |  30 ++--
 .../ignite/internal/index/ItIndexManagerTest.java  |  11 +-
 .../runner/app/AbstractSchemaChangeTest.java       |   4 +-
 .../runner/app/client/ItThinClientSqlTest.java     |   2 -
 .../internal/sql/api/ItSqlAsynchronousApiTest.java | 158 +++++++++------------
 .../sql/api/ItSqlClientAsynchronousApiTest.java    |   3 +-
 .../sql/engine/AbstractBasicIntegrationTest.java   |   2 +-
 .../ignite/internal/sql/engine/ItDmlTest.java      |  13 +-
 .../internal/sql/engine/ItIndexSpoolTest.java      |   6 +-
 .../ignite/internal/sql/engine/ItJoinTest.java     |  11 +-
 .../internal/sql/engine/ItMixedQueriesTest.java    |  43 +++---
 .../internal/sql/engine/ItOrToUnionRuleTest.java   |  22 +--
 .../internal/sql/engine/ItSortAggregateTest.java   |  11 +-
 .../ignite/internal/sqllogic/ItSqlLogicTest.java   |   3 +-
 .../internal/sql/api/StatementBuilderImpl.java     |   2 +-
 .../internal/sql/engine/IgniteSqlApiTest.java      |  18 +--
 .../internal/sql/engine/StopCalciteModuleTest.java |   2 +-
 .../sql/engine/exec/ExecutionServiceImplTest.java  |   2 +-
 .../sql/engine/exec/MockedStructuresTest.java      |   2 +-
 .../engine/exec/schema/SqlSchemaManagerTest.java   |   3 +-
 .../internal/sql/engine/framework/TestNode.java    |   3 +-
 .../sql/engine/util/CompositeSubscriptionTest.java |  43 +++---
 23 files changed, 198 insertions(+), 212 deletions(-)

diff --git 
a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
 
b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
index ccaf4c17fc..333419c98e 100644
--- 
a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
+++ 
b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
@@ -18,6 +18,8 @@
 package org.apache.ignite.internal.index;
 
 import static 
org.apache.ignite.configuration.annotation.ConfigurationType.DISTRIBUTED;
+import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.assertThrowsWithCause;
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
 import static org.apache.ignite.lang.IgniteStringFormatter.format;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
@@ -330,18 +332,18 @@ public class IndexManagerTest {
         assertThat(holder.get().indexId(), equalTo(indexId));
     }
 
+    @SuppressWarnings("ThrowableNotThrown")
     @Test
     public void createIndexWithExistingTableName() {
         CompletableFuture<Boolean> createIdxFut = 
indexManager.createIndexAsync("sName", "tName", "tName", true, indexChange ->
                 
indexChange.convert(SortedIndexChange.class).changeColumns(columns ->
                         columns.create("c2", columnChange -> 
columnChange.changeAsc(true))));
 
-        CompletionException completionException = 
assertThrows(CompletionException.class, createIdxFut::join);
-
-        assertTrue(IgniteTestUtils.hasCause(completionException, 
ConfigurationValidationException.class,
-                "Table with the same name already exists."));
+        assertThrowsWithCause(() -> await(createIdxFut), 
ConfigurationValidationException.class,
+                "Table with the same name already exists.");
     }
 
+    @SuppressWarnings("ThrowableNotThrown")
     @Test
     public void createTableWithExistingIndexName() {
         String indexName = "idx" + index.incrementAndGet();
@@ -369,10 +371,8 @@ public class IndexManagerTest {
                         .changePrimaryKey(pk -> 
pk.changeColumns("c1").changeColocationColumns("c1"));
             }));
 
-            CompletionException completionException = 
assertThrows(CompletionException.class, createTblFut::join);
-
-            assertTrue(IgniteTestUtils.hasCause(completionException, 
ConfigurationValidationException.class,
-                    "Index with the same name already exists."));
+            assertThrowsWithCause(() -> await(createTblFut), 
ConfigurationValidationException.class,
+                    "Index with the same name already exists.");
         } finally {
             indexManager.dropIndexAsync("sName", indexName, true).join();
         }
diff --git 
a/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
 
b/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
index ab8721be4f..ce4633bfe0 100644
--- 
a/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
+++ 
b/modules/jdbc/src/integrationTest/java/org/apache/ignite/jdbc/ItJdbcResultSetSelfTest.java
@@ -41,7 +41,6 @@ import java.time.LocalDate;
 import java.util.GregorianCalendar;
 import org.apache.ignite.internal.tostring.S;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -52,7 +51,7 @@ public class ItJdbcResultSetSelfTest extends 
AbstractJdbcSelfTest {
     private static final String STATIC_SQL =
             "SELECT 1::INTEGER as id, true as boolVal, 1::TINYINT as byteVal, 
1::SMALLINT as shortVal, 1::INTEGER as intVal, 1::BIGINT "
                     + "as longVal, 1.0::FLOAT as floatVal, 1.0::DOUBLE as 
doubleVal, 1.0::DECIMAL as bigVal, "
-                    + "'1' as strVal, '1', '1901-02-01'::DATE as dateVal, 
'01:01:01'::TIME as timeVal, 1::TIMESTAMP as tsVal;";
+                    + "'1' as strVal, '1', '1901-02-01'::DATE as dateVal, 
'01:01:01'::TIME as timeVal, 0::TIMESTAMP as tsVal;";
 
     /** SQL query. */
     private static final String SQL_SINGLE_RES = "select id, boolVal, byteVal, 
shortVal, intVal, longVal, floatVal, "
@@ -486,7 +485,6 @@ public class ItJdbcResultSetSelfTest extends 
AbstractJdbcSelfTest {
     }
 
     @Test
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-16905";)
     public void testDate() throws Exception {
         ResultSet rs = stmt.executeQuery(STATIC_SQL);
 
@@ -520,7 +518,6 @@ public class ItJdbcResultSetSelfTest extends 
AbstractJdbcSelfTest {
      */
     @SuppressWarnings("deprecation")
     @Test
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-16905";)
     public void testTime() throws Exception {
         ResultSet rs = stmt.executeQuery(STATIC_SQL);
 
@@ -546,28 +543,21 @@ public class ItJdbcResultSetSelfTest extends 
AbstractJdbcSelfTest {
     }
 
     @Test
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-16905";)
     public void testTimestamp() throws Exception {
         ResultSet rs = stmt.executeQuery(STATIC_SQL);
 
-        int cnt = 0;
+        assertTrue(rs.next());
 
-        while (rs.next()) {
-            if (cnt == 0) {
-                assertEquals(-10800000, rs.getTimestamp("tsVal").getTime());
-                assertEquals(new Date(new Timestamp(-10800000).getTime()), 
rs.getDate(14));
-                assertEquals(new Time(new Timestamp(-10800000).getTime()), 
rs.getTime(14));
-                assertEquals(new Timestamp(-10800000), rs.getTimestamp(14));
-
-                assertEquals(new Date(new Timestamp(-10800000).getTime()), 
rs.getObject(14, Date.class));
-                assertEquals(new Time(new Timestamp(-10800000).getTime()), 
rs.getObject(14, Time.class));
-                assertEquals(new Timestamp(-10800000), rs.getObject(14, 
Timestamp.class));
-            }
+        assertEquals(-10800000, rs.getTimestamp("tsVal").getTime());
+        assertEquals(new Date(new Timestamp(-10800000).getTime()), 
rs.getDate(14));
+        assertEquals(new Time(new Timestamp(-10800000).getTime()), 
rs.getTime(14));
+        assertEquals(new Timestamp(-10800000), rs.getTimestamp(14));
 
-            cnt++;
-        }
+        assertEquals(new Date(new Timestamp(-10800000).getTime()), 
rs.getObject(14, Date.class));
+        assertEquals(new Time(new Timestamp(-10800000).getTime()), 
rs.getObject(14, Time.class));
+        assertEquals(new Timestamp(-10800000), rs.getObject(14, 
Timestamp.class));
 
-        assertEquals(1, cnt);
+        assertFalse(rs.next());
     }
 
     @Test
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
index eb42a4cf75..368de0d152 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
@@ -70,8 +70,13 @@ public class ItIndexManagerTest extends 
AbstractBasicIntegrationTest {
 
         CompletableFuture<IndexEventParameters> indexCreatedFuture = 
registerListener(indexManager, IndexEvent.CREATE);
 
-        indexManager.createIndexAsync("PUBLIC", "INAME", "TNAME", true, 
tableIndexChange ->
-                
tableIndexChange.convert(HashIndexChange.class).changeColumnNames("C3", 
"C2")).join();
+        await(indexManager.createIndexAsync(
+                "PUBLIC",
+                "INAME",
+                "TNAME",
+                true,
+                tableIndexChange -> 
tableIndexChange.convert(HashIndexChange.class).changeColumnNames("C3", "C2")
+                ));
 
         UUID createdIndexId;
         {
@@ -87,7 +92,7 @@ public class ItIndexManagerTest extends 
AbstractBasicIntegrationTest {
 
         CompletableFuture<IndexEventParameters> indexDroppedFuture = 
registerListener(indexManager, IndexEvent.DROP);
 
-        indexManager.dropIndexAsync("PUBLIC", "INAME", true).join();
+        await(indexManager.dropIndexAsync("PUBLIC", "INAME", true));
 
         {
             IndexEventParameters params = await(indexDroppedFuture);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
index 635322e8e2..5385fb2c14 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
@@ -173,7 +173,7 @@ abstract class AbstractSchemaChangeTest {
     /**
      * Returns grid nodes.
      */
-    protected List<Ignite> startGrid() throws Exception {
+    protected List<Ignite> startGrid() {
         List<CompletableFuture<Ignite>> futures = 
nodesBootstrapCfg.entrySet().stream()
                 .map(e -> IgnitionManager.start(e.getKey(), e.getValue(), 
workDir.resolve(e.getKey())))
                 .collect(toList());
@@ -182,6 +182,8 @@ abstract class AbstractSchemaChangeTest {
 
         IgnitionManager.init(metaStorageNode, List.of(metaStorageNode), 
"cluster");
 
+        await(CompletableFuture.allOf(futures.toArray(new 
CompletableFuture[0])));
+
         return futures.stream()
                 .map(CompletableFuture::join)
                 .collect(toUnmodifiableList());
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
index 4ca74083e8..a53531595a 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
@@ -40,7 +40,6 @@ import org.apache.ignite.sql.Statement;
 import org.apache.ignite.sql.async.AsyncResultSet;
 import org.apache.ignite.tx.Transaction;
 import org.hamcrest.Matchers;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -352,7 +351,6 @@ public class ItThinClientSqlTest extends 
ItAbstractThinClientTest {
     }
 
     @Test
-    @Disabled("IGNITE-16952")
     void testTransactionRollbackRevertsSqlUpdate() {
         Session session = client().sql().createSession();
 
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
index 40b9ce51be..e4b1242983 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
@@ -37,9 +37,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionException;
 import java.util.concurrent.CompletionStage;
-import java.util.concurrent.ExecutionException;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
@@ -78,6 +76,7 @@ import org.apache.ignite.sql.async.AsyncResultSet;
 import org.apache.ignite.table.Table;
 import org.apache.ignite.tx.IgniteTransactions;
 import org.apache.ignite.tx.Transaction;
+import org.apache.ignite.tx.TransactionException;
 import org.hamcrest.Matcher;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
@@ -120,7 +119,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
     }
 
     @Test
-    public void ddl() throws Exception {
+    public void ddl() {
         IgniteSql sql = CLUSTER_NODES.get(0).sql();
         Session ses = sql.createSession();
 
@@ -203,7 +202,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
     }
 
     @Test
-    public void dml() throws ExecutionException, InterruptedException {
+    public void dml() {
         sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
 
         IgniteSql sql = CLUSTER_NODES.get(0).sql();
@@ -220,7 +219,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
     /** Check all transactions are processed correctly even with case of sql 
Exception raised. */
     @Test
-    public void implicitTransactionsStates() throws Exception {
+    public void implicitTransactionsStates() {
         IgniteSql sql = igniteSql();
 
         if (sql instanceof ClientSql) {
@@ -241,13 +240,13 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
             AsyncResultSet asyncRes = null;
 
             try {
-                asyncRes = fut.get();
+                asyncRes = await(fut);
             } catch (Throwable ignore) {
                 // No op.
             }
 
             if (asyncRes != null) {
-                asyncRes.closeAsync().toCompletableFuture().get();
+                await(asyncRes.closeAsync());
             }
         }
 
@@ -257,7 +256,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
     /** Check correctness of explicit transaction rollback. */
     @Test
-    public void checkExplicitTxRollback() throws Exception {
+    public void checkExplicitTxRollback() {
         IgniteSql sql = igniteSql();
 
         sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
@@ -271,18 +270,18 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
             checkDml(1, ses, "INSERT INTO TEST VALUES (?, ?)", outerTx, i, i);
         }
 
-        outerTx.rollbackAsync().get();
+        await(outerTx.rollbackAsync());
 
-        AsyncResultSet rs = ses.executeAsync(null, "SELECT VAL0 FROM TEST 
ORDER BY VAL0").get();
+        AsyncResultSet rs = await(ses.executeAsync(null, "SELECT VAL0 FROM 
TEST ORDER BY VAL0"));
 
         assertEquals(0, StreamSupport.stream(rs.currentPage().spliterator(), 
false).count());
 
-        rs.closeAsync();
+        await(rs.closeAsync());
     }
 
     /** Check correctness of implicit and explicit transactions. */
     @Test
-    public void checkTransactionsWithDml() throws Exception {
+    public void checkTransactionsWithDml() {
         IgniteSql sql = igniteSql();
 
         if (sql instanceof ClientSql) {
@@ -313,13 +312,13 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         // Outdated tx.
         Transaction outerTx0 = outerTx;
 
-        assertThrows(ExecutionException.class,
+        assertThrows(TransactionException.class,
                 () -> checkDml(1, ses, "INSERT INTO TEST VALUES (?, ?)", 
outerTx0, ROW_COUNT, Integer.MAX_VALUE));
 
-        assertThrows(ExecutionException.class,
+        assertThrows(SqlException.class,
                 () -> checkDml(1, ses, "INSERT INTO TEST VALUES (?, ?)", 
ROW_COUNT, Integer.MAX_VALUE));
 
-        AsyncResultSet rs = ses.executeAsync(null, "SELECT VAL0 FROM TEST 
ORDER BY VAL0").get();
+        AsyncResultSet rs = await(ses.executeAsync(null, "SELECT VAL0 FROM 
TEST ORDER BY VAL0"));
 
         assertEquals(2 * ROW_COUNT, 
StreamSupport.stream(rs.currentPage().spliterator(), false).count());
 
@@ -327,7 +326,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
         outerTx = igniteTx().begin();
 
-        rs = ses.executeAsync(outerTx, "SELECT VAL0 FROM TEST ORDER BY 
VAL0").get();
+        rs = await(ses.executeAsync(outerTx, "SELECT VAL0 FROM TEST ORDER BY 
VAL0"));
 
         assertEquals(2 * ROW_COUNT, 
StreamSupport.stream(rs.currentPage().spliterator(), false).count());
 
@@ -348,7 +347,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
     /** Check correctness of rw and ro transactions for table scan. */
     @Test
-    public void checkMixedTransactionsForTable() throws Exception {
+    public void checkMixedTransactionsForTable() {
         sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
 
         Matcher<String> planMatcher = containsTableScan("PUBLIC", "TEST");
@@ -370,7 +369,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         checkMixedTransactions(planMatcher);
     }
 
-    private void checkMixedTransactions(Matcher<String> planMatcher) throws 
Exception {
+    private void checkMixedTransactions(Matcher<String> planMatcher) {
         IgniteSql sql = igniteSql();
 
         if (sql instanceof ClientSql) {
@@ -393,14 +392,14 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         }
     }
 
-    private void checkTx(Session ses, boolean readOnly, boolean commit, 
boolean explicit, Matcher<String> planMatcher) throws Exception {
+    private void checkTx(Session ses, boolean readOnly, boolean commit, 
boolean explicit, Matcher<String> planMatcher) {
         Transaction outerTx = explicit ? (readOnly ? 
igniteTx().readOnly().begin() : igniteTx().begin()) : null;
 
         String query = "SELECT VAL0 FROM TEST ORDER BY VAL0";
 
         assertQuery(outerTx, query).matches(planMatcher).check();
 
-        AsyncResultSet rs = ses.executeAsync(outerTx, query).get();
+        AsyncResultSet rs = await(ses.executeAsync(outerTx, query));
 
         assertEquals(ROW_COUNT, 
StreamSupport.stream(rs.currentPage().spliterator(), false).count());
 
@@ -416,7 +415,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
     }
 
     @Test
-    public void select() throws ExecutionException, InterruptedException {
+    public void select() {
         sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
         for (int i = 0; i < ROW_COUNT; ++i) {
             sql("INSERT INTO TEST VALUES (?, ?)", i, i);
@@ -426,7 +425,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         Session ses = sql.sessionBuilder().defaultPageSize(ROW_COUNT / 
4).build();
 
         TestPageProcessor pageProc = new TestPageProcessor(4);
-        ses.executeAsync(null, "SELECT ID FROM 
TEST").thenCompose(pageProc).get();
+        await(ses.executeAsync(null, "SELECT ID FROM 
TEST").thenCompose(pageProc));
 
         Set<Integer> rs = pageProc.result().stream().map(r -> 
r.intValue(0)).collect(Collectors.toSet());
 
@@ -438,14 +437,14 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
     }
 
     @Test
-    public void metadata() throws ExecutionException, InterruptedException {
+    public void metadata() {
         sql("CREATE TABLE TEST(COL0 BIGINT PRIMARY KEY, COL1 VARCHAR NOT 
NULL)");
         sql("INSERT INTO TEST VALUES (?, ?)", 1L, "some string");
 
         IgniteSql sql = igniteSql();
         Session ses = sql.sessionBuilder().build();
 
-        AsyncResultSet rs = ses.executeAsync(null, "SELECT COL1, COL0 FROM 
TEST").get();
+        AsyncResultSet rs = await(ses.executeAsync(null, "SELECT COL1, COL0 
FROM TEST"));
 
         // Validate columns metadata.
         ResultSetMetadata meta = rs.metadata();
@@ -478,18 +477,18 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
         SqlRow row = rs.currentPage().iterator().next();
 
-        rs.closeAsync().toCompletableFuture().get();
+        await(rs.closeAsync());
 
         assertInstanceOf(meta.columns().get(0).valueClass(), row.value(0));
         assertInstanceOf(meta.columns().get(1).valueClass(), row.value(1));
     }
 
     @Test
-    public void sqlRow() throws ExecutionException, InterruptedException {
+    public void sqlRow() {
         IgniteSql sql = igniteSql();
         Session ses = sql.sessionBuilder().build();
 
-        AsyncResultSet ars = ses.executeAsync(null, "SELECT 1 as COL_A, 2 as 
COL_B").get();
+        AsyncResultSet ars = await(ses.executeAsync(null, "SELECT 1 as COL_A, 
2 as COL_B"));
 
         SqlRow r = CollectionUtils.first(ars.currentPage());
 
@@ -516,7 +515,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
     }
 
     @Test
-    public void pageSequence() throws ExecutionException, InterruptedException 
{
+    public void pageSequence() {
         sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
         for (int i = 0; i < ROW_COUNT; ++i) {
             sql("INSERT INTO TEST VALUES (?, ?)", i, i);
@@ -525,15 +524,15 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         IgniteSql sql = igniteSql();
         Session ses = sql.sessionBuilder().defaultPageSize(1).build();
 
-        AsyncResultSet ars0 = ses.executeAsync(null, "SELECT ID FROM TEST 
ORDER BY ID").get();
+        AsyncResultSet ars0 = await(ses.executeAsync(null, "SELECT ID FROM 
TEST ORDER BY ID"));
         var p0 = ars0.currentPage();
-        AsyncResultSet ars1 = ars0.fetchNextPage().toCompletableFuture().get();
+        AsyncResultSet ars1 = await(ars0.fetchNextPage());
         var p1 = ars1.currentPage();
-        AsyncResultSet ars2 = ars1.fetchNextPage().toCompletableFuture().get();
+        AsyncResultSet ars2 = 
await(ars1.fetchNextPage().toCompletableFuture());
         var p2 = ars2.currentPage();
-        AsyncResultSet ars3 = ars1.fetchNextPage().toCompletableFuture().get();
+        AsyncResultSet ars3 = await(ars1.fetchNextPage());
         var p3 = ars3.currentPage();
-        AsyncResultSet ars4 = ars0.fetchNextPage().toCompletableFuture().get();
+        AsyncResultSet ars4 = await(ars0.fetchNextPage());
         var p4 = ars4.currentPage();
 
         assertSame(ars0, ars1);
@@ -546,7 +545,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
                 .collect(Collectors.toList());
 
         TestPageProcessor pageProc = new TestPageProcessor(ROW_COUNT - 
res.size());
-        ars4.fetchNextPage().thenCompose(pageProc).toCompletableFuture().get();
+        await(ars4.fetchNextPage().thenCompose(pageProc));
 
         res.addAll(pageProc.result());
 
@@ -566,46 +565,38 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         Session ses = sql.sessionBuilder().defaultPageSize(ROW_COUNT / 
2).build();
 
         // Parse error.
-        {
-            CompletableFuture<AsyncResultSet> f = ses.executeAsync(null, 
"SELECT ID FROM");
-            assertThrowsWithCause(f::get, SqlException.class, "Failed to parse 
query");
-        }
+        assertThrowsWithCause(() -> await(ses.executeAsync(null, "SELECT ID 
FROM")),
+                SqlException.class, "Failed to parse query");
 
         // Multiple statements error.
-        {
-            CompletableFuture<AsyncResultSet> f = ses.executeAsync(null, 
"SELECT 1; SELECT 2");
-            assertThrowsWithCause(f::get, SqlException.class, "Multiple 
statements aren't allowed");
-        }
+        assertThrowsWithCause(() -> await(ses.executeAsync(null, "SELECT 1; 
SELECT 2")),
+                SqlException.class, "Multiple statements aren't allowed");
 
         // Planning error.
-        {
-            CompletableFuture<AsyncResultSet> f = ses.executeAsync(null, 
"CREATE TABLE TEST2 (VAL INT)");
-            assertThrowsWithCause(f::get, SqlException.class, "Table without 
PRIMARY KEY is not supported");
-        }
+        assertThrowsWithCause(() -> await(ses.executeAsync(null, "CREATE TABLE 
TEST2 (VAL INT)")),
+                SqlException.class, "Table without PRIMARY KEY is not 
supported");
 
         // Execute error.
-        {
-            CompletableFuture<AsyncResultSet> f = ses.executeAsync(null, 
"SELECT 1 / ?", 0);
-            assertThrowsWithCause(f::get, IgniteException.class, "/ by zero");
-        }
+        assertThrowsWithCause(() -> await(ses.executeAsync(null, "SELECT 1 / 
?", 0)),
+                IgniteException.class, "/ by zero");
 
         // No result set error.
         {
-            AsyncResultSet ars = ses.executeAsync(null, "CREATE TABLE TEST3 
(ID INT PRIMARY KEY)").join();
-            assertThrowsWithCause(() -> 
ars.fetchNextPage().toCompletableFuture().get(), 
NoRowSetExpectedException.class,
+            AsyncResultSet ars = await(ses.executeAsync(null, "CREATE TABLE 
TEST3 (ID INT PRIMARY KEY)"));
+            assertThrowsWithCause(() -> await(ars.fetchNextPage()), 
NoRowSetExpectedException.class,
                     "Query has no result set");
         }
 
         // Cursor closed error.
         {
-            AsyncResultSet ars = ses.executeAsync(null, "SELECT * FROM 
TEST").join();
-            ars.closeAsync().toCompletableFuture().join();
-            assertThrowsWithCause(() -> 
ars.fetchNextPage().toCompletableFuture().get(), CursorClosedException.class);
+            AsyncResultSet ars = await(ses.executeAsync(null, "SELECT * FROM 
TEST"));
+            await(ars.closeAsync());
+            assertThrowsWithCause(() -> await(ars.fetchNextPage()), 
CursorClosedException.class);
         }
     }
 
     @Test
-    public void closeSession() throws ExecutionException, InterruptedException 
{
+    public void closeSession() {
         sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
         for (int i = 0; i < ROW_COUNT; ++i) {
             sql("INSERT INTO TEST VALUES (?, ?)", i, i);
@@ -614,20 +605,20 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
         IgniteSql sql = igniteSql();
         Session ses = sql.sessionBuilder().defaultPageSize(2).build();
 
-        AsyncResultSet ars0 = ses.executeAsync(null, "SELECT ID FROM 
TEST").get();
+        AsyncResultSet ars0 = await(ses.executeAsync(null, "SELECT ID FROM 
TEST"));
 
-        ses.closeAsync().get();
+        await(ses.closeAsync());
 
         // Fetched page is available after cancel.
         ars0.currentPage();
 
         assertThrowsWithCause(
-                () -> ars0.fetchNextPage().toCompletableFuture().get(),
+                () -> await(ars0.fetchNextPage()),
                 ExecutionCancelledException.class
         );
 
         assertThrowsWithCause(
-                () -> ses.executeAsync(null, "SELECT ID FROM TEST").get(),
+                () -> await(ses.executeAsync(null, "SELECT ID FROM TEST")),
                 SqlException.class,
                 "Session is closed"
         );
@@ -646,7 +637,7 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
             args.add(i, i);
         }
 
-        long[] batchRes = ses.executeBatchAsync(null, "INSERT INTO TEST VALUES 
(?, ?)", args).join();
+        long[] batchRes = await(ses.executeBatchAsync(null, "INSERT INTO TEST 
VALUES (?, ?)", args));
 
         Arrays.stream(batchRes).forEach(r -> assertEquals(1L, r));
 
@@ -656,13 +647,13 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
         // Check invalid query type
         assertThrowsWithCause(
-                () -> ses.executeBatchAsync(null, "SELECT * FROM TEST", 
args).get(),
+                () -> await(ses.executeBatchAsync(null, "SELECT * FROM TEST", 
args)),
                 SqlException.class,
                 "Unexpected number of query parameters. Provided 2 but there 
is only 0 dynamic parameter(s)"
         );
 
         assertThrowsWithCause(
-                () -> ses.executeBatchAsync(null, "CREATE TABLE TEST1(ID INT 
PRIMARY KEY, VAL0 INT)", args).get(),
+                () -> await(ses.executeBatchAsync(null, "CREATE TABLE TEST1(ID 
INT PRIMARY KEY, VAL0 INT)", args)),
                 SqlException.class,
                 "Invalid SQL statement type in the batch"
         );
@@ -687,26 +678,23 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
             }
         }
 
-        CompletionException ex = assertThrows(
-                CompletionException.class,
-                () -> ses.executeBatchAsync(null, "INSERT INTO TEST VALUES (?, 
?)", args).join()
+        SqlBatchException ex = assertThrows(
+                SqlBatchException.class,
+                () -> await(ses.executeBatchAsync(null, "INSERT INTO TEST 
VALUES (?, ?)", args))
         );
 
-        assertInstanceOf(SqlBatchException.class, ex.getCause());
-        SqlBatchException batchEx = (SqlBatchException) ex.getCause();
-
-        assertEquals(Sql.DUPLICATE_KEYS_ERR, batchEx.code());
-        assertEquals(err, batchEx.updateCounters().length);
-        IntStream.range(0, batchEx.updateCounters().length).forEach(i -> 
assertEquals(1, batchEx.updateCounters()[i]));
+        assertEquals(Sql.DUPLICATE_KEYS_ERR, ex.code());
+        assertEquals(err, ex.updateCounters().length);
+        IntStream.range(0, ex.updateCounters().length).forEach(i -> 
assertEquals(1, ex.updateCounters()[i]));
     }
 
-    private static void checkDdl(boolean expectedApplied, Session ses, String 
sql, Transaction tx) throws Exception {
+    private static void checkDdl(boolean expectedApplied, Session ses, String 
sql, Transaction tx) {
         CompletableFuture<AsyncResultSet> fut = ses.executeAsync(
                 tx,
                 sql
         );
 
-        AsyncResultSet asyncRes = fut.get();
+        AsyncResultSet asyncRes = await(fut);
 
         assertEquals(expectedApplied, asyncRes.wasApplied());
         assertFalse(asyncRes.hasMorePages());
@@ -715,28 +703,23 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
         assertNull(asyncRes.metadata());
 
-        asyncRes.closeAsync().toCompletableFuture().get();
+        await(asyncRes.closeAsync());
     }
 
-    private static void checkDdl(boolean expectedApplied, Session ses, String 
sql) throws Exception {
+    private static void checkDdl(boolean expectedApplied, Session ses, String 
sql) {
         checkDdl(expectedApplied, ses, sql, null);
     }
 
     private static void checkError(Class<? extends Throwable> 
expectedException, String msg, Session ses, String sql, Object... args) {
-        CompletableFuture<AsyncResultSet> fut = ses.executeAsync(
+        assertThrowsWithCause(() -> await(ses.executeAsync(
                 null,
                 sql,
                 args
-        );
-
-        assertThrowsWithCause(fut::get, expectedException, msg);
+        )), expectedException, msg);
     }
 
-    protected static void checkDml(int expectedAffectedRows, Session ses, 
String sql, Transaction tx, Object... args)
-            throws ExecutionException, InterruptedException {
-        CompletableFuture<AsyncResultSet> fut = ses.executeAsync(tx, sql, 
args);
-
-        AsyncResultSet asyncRes = fut.get();
+    protected static void checkDml(int expectedAffectedRows, Session ses, 
String sql, Transaction tx, Object... args) {
+        AsyncResultSet asyncRes = await(ses.executeAsync(tx, sql, args));
 
         assertFalse(asyncRes.wasApplied());
         assertFalse(asyncRes.hasMorePages());
@@ -745,11 +728,10 @@ public class ItSqlAsynchronousApiTest extends 
AbstractBasicIntegrationTest {
 
         assertNull(asyncRes.metadata());
 
-        asyncRes.closeAsync().toCompletableFuture().get();
+        await(asyncRes.closeAsync());
     }
 
-    protected static void checkDml(int expectedAffectedRows, Session ses, 
String sql, Object... args)
-            throws ExecutionException, InterruptedException {
+    protected static void checkDml(int expectedAffectedRows, Session ses, 
String sql, Object... args) {
         checkDml(expectedAffectedRows, ses, sql, null, args);
     }
 
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlClientAsynchronousApiTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlClientAsynchronousApiTest.java
index af39f1ec9a..356ce99c5d 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlClientAsynchronousApiTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlClientAsynchronousApiTest.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.sql.api;
 
 import static 
org.apache.ignite.internal.runner.app.client.ItAbstractThinClientTest.getClientAddresses;
 
-import java.util.concurrent.ExecutionException;
 import org.apache.ignite.client.IgniteClient;
 import org.apache.ignite.sql.IgniteSql;
 import org.apache.ignite.tx.IgniteTransactions;
@@ -55,7 +54,7 @@ public class ItSqlClientAsynchronousApiTest extends 
ItSqlAsynchronousApiTest {
 
     @Override
     @Disabled("IGNITE-17134")
-    public void closeSession() throws ExecutionException, InterruptedException 
{
+    public void closeSession() {
         super.closeSession();
     }
 }
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
index 601724c094..7f7ac3d6c3 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
@@ -145,7 +145,7 @@ public class AbstractBasicIntegrationTest extends 
BaseIgniteAbstractTest {
         for (CompletableFuture<Ignite> future : futures) {
             assertThat(future, willCompleteSuccessfully());
 
-            CLUSTER_NODES.add(future.join());
+            CLUSTER_NODES.add(await(future));
         }
     }
 
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
index e4c1005fb8..e8cbba935e 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
@@ -97,8 +97,7 @@ public class ItDmlTest extends AbstractBasicIntegrationTest {
     }
 
     @Test
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-16529";)
-    public void mergeOpChangePrimaryKey() {
+    public void failMergeOpOnChangePrimaryKey() {
         clearAndPopulateMergeTable1();
 
         clearAndPopulateMergeTable2();
@@ -107,13 +106,7 @@ public class ItDmlTest extends 
AbstractBasicIntegrationTest {
                 + "WHEN MATCHED THEN UPDATE SET b = src.b, k1 = src.k1 "
                 + "WHEN NOT MATCHED THEN INSERT (k1, k2, a, b) VALUES (src.k1, 
src.k2, src.a, src.b)";
 
-        sql(sql);
-
-        assertQuery("SELECT * FROM test2 ORDER BY k1")
-                .returns(222, 222, 1, 300, null)
-                .returns(111, 333, 0, 100, "")
-                .returns(444, 444, 2, 200, null)
-                .check();
+        assertThrows(CalciteContextException.class, () -> sql(sql));
     }
 
     @Test
@@ -481,7 +474,7 @@ public class ItDmlTest extends AbstractBasicIntegrationTest 
{
     }
 
     private void checkDefaultValue(List<DefaultValueArg> args) {
-        assert args.size() > 0;
+        assert !args.isEmpty();
 
         try {
             StringBuilder createStatementBuilder = new StringBuilder("CREATE 
TABLE test (id INT PRIMARY KEY");
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
index 567100b54d..92fe9d4708 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
@@ -94,11 +94,11 @@ public class ItIndexSpoolTest extends 
AbstractBasicIntegrationTest {
         for (String name : List.of("TEST0", "TEST1")) {
             sql(String.format("CREATE TABLE " + name + "(id INT PRIMARY KEY, 
jid INT, val VARCHAR) WITH replicas=2,partitions=%d", parts));
 
+            sql("CREATE INDEX " + name + "_jid_idx ON " + name + "(jid)");
+
             // FIXME: https://issues.apache.org/jira/browse/IGNITE-18203
             waitForIndex(name + "_PK");
-
-            // TODO: https://issues.apache.org/jira/browse/IGNITE-17304 
uncomment this
-            // sql("CREATE INDEX " + name + "_jid_idx ON " + name + "(jid)");
+            waitForIndex(name + "_jid_idx");
 
             insertData(name, List.of("ID", "JID", "VAL"), dataRows);
         }
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
index 369c46b09c..ce1aee7477 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
@@ -36,13 +36,16 @@ import org.junit.jupiter.params.provider.MethodSource;
  */
 public class ItJoinTest extends AbstractBasicIntegrationTest {
     @BeforeAll
-    public static void beforeTestsStarted() {
+    public static void beforeTestsStarted() throws InterruptedException {
         sql("CREATE TABLE t1 (id INT PRIMARY KEY, c1 INT NOT NULL, c2 INT, c3 
INT)");
         sql("CREATE TABLE t2 (id INT PRIMARY KEY, c1 INT NOT NULL, c2 INT, c3 
INT)");
 
-        // TODO: support indexes. 
https://issues.apache.org/jira/browse/IGNITE-17304
-        // sql("create index t1_idx on t1 (c3, c2, c1)");
-        // sql("create index t2_idx on t2 (c3, c2, c1)");
+        sql("create index t1_idx on t1 (c3, c2, c1)");
+        sql("create index t2_idx on t2 (c3, c2, c1)");
+
+        // FIXME: https://issues.apache.org/jira/browse/IGNITE-18203
+        waitForIndex("t1_idx");
+        waitForIndex("t2_idx");
 
         insertData("t1", List.of("ID", "C1", "C2", "C3"),
                 new Object[] {0, 1, 1, 1},
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
index be90ce4d33..3ae1c212ca 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
@@ -286,33 +286,35 @@ public class ItMixedQueriesTest extends 
AbstractBasicIntegrationTest {
     }
 
     /**
-     * Test verifies that
-     * 1) proper indexes will be chosen for queries with different kinds of 
ordering, and
-     * 2) result set returned will be sorted as expected.
+     * Test verifies that 1) proper indexes will be chosen for queries with 
different kinds of ordering, and 2) result set returned will be
+     * sorted as expected.
      */
     @Test
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-17304";)
-    public void testSelectWithOrdering() {
-        // sql("drop table if exists test_tbl", true);
-        // sql("create table test_tbl (c1 int)", true);
-        // sql("insert into test_tbl values (1), (2), (3), (null)", true);
+    public void testSelectWithOrdering() throws InterruptedException {
+        sql("drop table if exists test_tbl", true);
+        sql("create table test_tbl (k1 int primary key, c1 int)", true);
 
-        // sql("create index idx_asc on test_tbl (c1)", true);
-        // sql("create index idx_desc on test_tbl (c1 desc)", true);
+        sql("create index idx_asc on test_tbl (c1)", true);
+        sql("create index idx_desc on test_tbl (c1 desc)", true);
+
+        // FIXME: https://issues.apache.org/jira/browse/IGNITE-18203
+        waitForIndex("idx_asc");
+        waitForIndex("idx_desc");
+
+        sql("insert into test_tbl values (1, 1), (2, 2), (3, 3), (4, null)", 
true);
 
         assertQuery("select c1 from test_tbl ORDER BY c1")
-                // .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_ASC"))
-                // .matches(not(containsSubPlan("IgniteSort")))
+                .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_ASC"))
+                .matches(not(containsSubPlan("IgniteSort")))
                 .ordered()
-                .returns(null)
                 .returns(1)
                 .returns(2)
                 .returns(3)
+                .returns(null)
                 .check();
 
         assertQuery("select c1 from test_tbl ORDER BY c1 asc nulls first")
-                .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_ASC"))
-                .matches(not(containsSubPlan("IgniteSort")))
+                .matches(containsSubPlan("IgniteSort"))
                 .ordered()
                 .returns(null)
                 .returns(1)
@@ -321,7 +323,8 @@ public class ItMixedQueriesTest extends 
AbstractBasicIntegrationTest {
                 .check();
 
         assertQuery("select c1 from test_tbl ORDER BY c1 asc nulls last")
-                .matches(containsSubPlan("IgniteSort"))
+                .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_ASC"))
+                .matches(not(containsSubPlan("IgniteSort")))
                 .ordered()
                 .returns(1)
                 .returns(2)
@@ -333,14 +336,15 @@ public class ItMixedQueriesTest extends 
AbstractBasicIntegrationTest {
                 .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_DESC"))
                 .matches(not(containsSubPlan("IgniteSort")))
                 .ordered()
+                .returns(null)
                 .returns(3)
                 .returns(2)
                 .returns(1)
-                .returns(null)
                 .check();
 
         assertQuery("select c1 from test_tbl ORDER BY c1 desc nulls first")
-                .matches(containsSubPlan("IgniteSort"))
+                .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_DESC"))
+                .matches(not(containsSubPlan("IgniteSort")))
                 .ordered()
                 .returns(null)
                 .returns(3)
@@ -349,8 +353,7 @@ public class ItMixedQueriesTest extends 
AbstractBasicIntegrationTest {
                 .check();
 
         assertQuery("select c1 from test_tbl ORDER BY c1 desc nulls last")
-                .matches(containsIndexScan("PUBLIC", "TEST_TBL", "IDX_DESC"))
-                .matches(not(containsSubPlan("IgniteSort")))
+                .matches(containsSubPlan("IgniteSort"))
                 .ordered()
                 .returns(3)
                 .returns(2)
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
index ada71a653a..f7df6ef5d1 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
@@ -20,12 +20,12 @@ package org.apache.ignite.internal.sql.engine;
 import static 
org.apache.ignite.internal.sql.engine.util.QueryChecker.containsIndexScan;
 import static 
org.apache.ignite.internal.sql.engine.util.QueryChecker.containsTableScan;
 import static 
org.apache.ignite.internal.sql.engine.util.QueryChecker.containsUnion;
+import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.not;
 
 import java.util.List;
 import org.hamcrest.CoreMatchers;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -38,7 +38,6 @@ import org.junit.jupiter.api.Test;
  * <p>SELECT * FROM products WHERE category = 'Photo' UNION ALL SELECT * FROM 
products WHERE subcategory ='Camera Media' AND LNNVL(category,
  * 'Photo');
  */
-@Disabled("https://issues.apache.org/jira/browse/IGNITE-17304";)
 public class ItOrToUnionRuleTest extends AbstractBasicIntegrationTest {
     public static final String IDX_SUBCAT_ID = "IDX_SUBCAT_ID";
 
@@ -52,7 +51,7 @@ public class ItOrToUnionRuleTest extends 
AbstractBasicIntegrationTest {
      * Before all.
      */
     @BeforeAll
-    static void initTestData() {
+    static void initTestData() throws InterruptedException {
         sql("CREATE TABLE products (id INT PRIMARY KEY, category VARCHAR, 
cat_id INT NOT NULL,"
                 + " subcategory VARCHAR, subcat_id INT NOT NULL, name 
VARCHAR)");
 
@@ -61,6 +60,12 @@ public class ItOrToUnionRuleTest extends 
AbstractBasicIntegrationTest {
         sql("CREATE INDEX " + IDX_SUBCATEGORY + " ON products (subcategory)");
         sql("CREATE INDEX " + IDX_SUBCAT_ID + " ON products (subcat_id)");
 
+        // FIXME: https://issues.apache.org/jira/browse/IGNITE-18203
+        waitForIndex(IDX_CATEGORY);
+        waitForIndex(IDX_CAT_ID);
+        waitForIndex(IDX_SUBCATEGORY);
+        waitForIndex(IDX_SUBCAT_ID);
+
         insertData("products", List.of("ID", "CATEGORY", "CAT_ID", 
"SUBCATEGORY", "SUBCAT_ID", "NAME"), new Object[][]{
                 {1, "Photo", 1, "Camera Media", 11, "Media 1"},
                 {2, "Photo", 1, "Camera Media", 11, "Media 2"},
@@ -111,7 +116,7 @@ public class ItOrToUnionRuleTest extends 
AbstractBasicIntegrationTest {
     }
 
     /**
-     * Check 'OR -> UNION' rule is applied for equality conditions on indexed 
columns.
+     * Check 'OR -> UNION' rule is not applied for equality conditions on 
indexed columns. Multibounds condition is used instead.
      *
      * @throws Exception If failed.
      */
@@ -120,10 +125,11 @@ public class ItOrToUnionRuleTest extends 
AbstractBasicIntegrationTest {
         assertQuery("SELECT * "
                 + "FROM products "
                 + "WHERE subcategory = 'Camera Lens' "
+                + "OR subcategory = 'Camera Tripod'"
                 + "OR subcategory = 'Other'")
-                .matches(containsUnion(true))
-                .matches(containsIndexScan("PUBLIC", "PRODUCTS", 
"IDX_SUBCATEGORY"))
+                .matches(not(containsUnion(true)))
                 .matches(containsIndexScan("PUBLIC", "PRODUCTS", 
"IDX_SUBCATEGORY"))
+                .matches(containsString("searchBounds=[[MultiBounds"))
                 .returns(3, "Photo", 1, "Camera Lens", 12, "Lens 1")
                 .returns(4, "Photo", 1, "Other", 12, "Charger 1")
                 .returns(6, "Video", 2, "Camera Lens", 22, "Lens 3")
@@ -195,8 +201,8 @@ public class ItOrToUnionRuleTest extends 
AbstractBasicIntegrationTest {
                 + "FROM products "
                 + "WHERE name = 'Canon' "
                 + "OR category = 'Video'")
-                .matches(containsUnion(true))
-                .matches(containsIndexScan("PUBLIC", "PRODUCTS", 
"IDX_CATEGORY"))
+                .matches(not(containsUnion(true)))
+                .matches(containsTableScan("PUBLIC", "PRODUCTS"))
                 .returns(5, "Video", 2, "Camera Media", 21, "Media 3")
                 .returns(6, "Video", 2, "Camera Lens", 22, "Lens 3")
                 .returns(7, "Video", 1, null, 0, "Canon")
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
index ad33d71831..eaafb69e1d 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
@@ -35,13 +35,16 @@ public class ItSortAggregateTest extends 
AbstractBasicIntegrationTest {
      * Before all.
      */
     @BeforeAll
-    static void initTestData() {
+    static void initTestData() throws InterruptedException {
         sql("CREATE TABLE test (id INT PRIMARY KEY, grp0 INT, grp1 INT, val0 
INT, val1 INT) WITH replicas=2,partitions=10");
         sql("CREATE TABLE test_one_col_idx (pk INT PRIMARY KEY, col0 INT)");
 
-        // TODO: https://issues.apache.org/jira/browse/IGNITE-17304 uncomment 
this
-        // sql("CREATE INDEX test_idx ON test(grp0, grp1)");
-        // sql("CREATE INDEX test_one_col_idx_idx ON test_one_col_idx(col0)");
+        sql("CREATE INDEX test_idx ON test(grp0, grp1)");
+        sql("CREATE INDEX test_one_col_idx_idx ON test_one_col_idx(col0)");
+
+        // FIXME: https://issues.apache.org/jira/browse/IGNITE-18203
+        waitForIndex("test_idx");
+        waitForIndex("test_one_col_idx_idx");
 
         for (int i = 0; i < ROWS; i++) {
             sql("INSERT INTO test (id, grp0, grp1, val0, val1) VALUES (?, ?, 
?, ?, ?)", i, i / 10, i / 100, 1, 2);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
index 12d0c2c414..52b2ffa5ba 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.sqllogic;
 
 import static java.util.stream.Collectors.toList;
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
 import static 
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
@@ -300,7 +301,7 @@ public class ItSqlLogicTest {
         for (CompletableFuture<Ignite> future : futures) {
             assertThat(future, willCompleteSuccessfully());
 
-            CLUSTER_NODES.add(future.join());
+            CLUSTER_NODES.add(await(future));
         }
     }
 
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/StatementBuilderImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/StatementBuilderImpl.java
index 8df5da05ad..8800281393 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/StatementBuilderImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/StatementBuilderImpl.java
@@ -122,7 +122,7 @@ class StatementBuilderImpl implements StatementBuilder {
     /** {@inheritDoc} */
     @Override
     public Statement build() {
-        // TODO IGNITE-16952
+        // TODO https://issues.apache.org/jira/browse/IGNITE-18647
         return new StatementImpl(query);
     }
 }
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
index 3b8b3a1aa0..946a0a5148 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/IgniteSqlApiTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.sql.engine;
 
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -222,16 +223,16 @@ public class IgniteSqlApiTest {
 
         KeyValueView<Tuple, Tuple> tbl = getTable();
 
-        igniteTx.beginAsync().thenAccept(tx -> {
+        await(igniteTx.beginAsync().thenAccept(tx -> {
             // Execute in TX.
             tbl.putAsync(tx, Tuple.create().set("id", 2), 
Tuple.create().set("val", "str2"))
                     .thenAccept(r -> tx.commit());
-        }).join();
+        }));
 
         ResultSet rs = sess.execute(null, "SELECT id, val FROM tbl WHERE id > 
?", 1);
         assertTrue(rs.hasNext());
 
-        igniteTx.beginAsync().thenAccept(tx -> {
+        await(igniteTx.beginAsync().thenAccept(tx -> {
             // Execute in TX.
             tbl.putAsync(tx, Tuple.create().set("id", 3), 
Tuple.create().set("val", "NewValue"))
                     .thenApply(f -> {
@@ -243,7 +244,7 @@ public class IgniteSqlApiTest {
                     .thenAccept(r -> tx.rollback());
 
             Mockito.verify(tx, Mockito.times(1)).rollback();
-        }).join();
+        }));
 
         rs = sess.execute(null, "SELECT id, val FROM tbl WHERE id > ?", 2);
         assertFalse(rs.hasNext());
@@ -303,13 +304,12 @@ public class IgniteSqlApiTest {
             }
         }
 
-        igniteTx.beginAsync()
+        await(igniteTx.beginAsync()
                 .thenCompose(tx0 -> igniteSql.createSession()
                         .executeAsync(tx0, "SELECT id, val FROM tbl WHERE id > 
?", 1)
                         .thenCompose(new AsyncPageProcessor(tx0))
                         .thenCompose(ignore -> tx0.commitAsync())
-                        .thenApply(ignore -> tx0))
-                .get();
+                        .thenApply(ignore -> tx0)));
 
         Mockito.verify(transaction).commitAsync();
         Mockito.verify(table, Mockito.times(4)).getAsync(Mockito.any(), 
Mockito.any());
@@ -329,7 +329,7 @@ public class IgniteSqlApiTest {
             assertTrue(row.stringValue("val").startsWith("str"));
         });
 
-        igniteTx.beginAsync().thenApply(tx -> {
+        await(igniteTx.beginAsync().thenApply(tx -> {
             final Session session = igniteSql.createSession();
 
             session.executeReactive(tx, "SELECT id, val FROM tbl WHERE id > 
?", 1)
@@ -340,7 +340,7 @@ public class IgniteSqlApiTest {
 
                 return null;
             }).thenApply(ignore -> tx.commitAsync());
-        }).join();
+        }));
 
         Mockito.verify(transaction).commitAsync();
     }
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/StopCalciteModuleTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/StopCalciteModuleTest.java
index b766eb6039..b23d82405c 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/StopCalciteModuleTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/StopCalciteModuleTest.java
@@ -230,7 +230,7 @@ public class StopCalciteModuleTest {
 
         qryProc.start();
 
-        testRevisionRegister.moveRevision.apply(0L).join();
+        await(testRevisionRegister.moveRevision.apply(0L));
 
         var cursors = qryProc.queryAsync(
                 "PUBLIC",
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
index 5c5e8fff44..71b5ca1af5 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
@@ -430,7 +430,7 @@ public class ExecutionServiceImplTest {
 
         assertThat(nodes, hasSize(1));
 
-        return prepareService.prepareAsync(nodes.get(0), ctx).join();
+        return await(prepareService.prepareAsync(nodes.get(0), ctx));
     }
 
     static class TestCluster {
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
index 4bd7c9f201..f9096f1f3f 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
@@ -209,7 +209,7 @@ public class MockedStructuresTest extends 
IgniteAbstractTest {
         mockMetastore();
 
         revisionUpdater = (Function<Long, CompletableFuture<?>> function) -> {
-            function.apply(0L).join();
+            await(function.apply(0L));
 
             
fieldRevisionListenerHolder.listenUpdateStorageRevision(newStorageRevision -> {
                 log.info("Notify about revision: {}", newStorageRevision);
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/schema/SqlSchemaManagerTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/schema/SqlSchemaManagerTest.java
index fd569c0b05..92c60cd392 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/schema/SqlSchemaManagerTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/schema/SqlSchemaManagerTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.sql.engine.exec.schema;
 
 import static java.util.concurrent.CompletableFuture.allOf;
 import static java.util.concurrent.CompletableFuture.completedFuture;
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.containsString;
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -388,7 +389,7 @@ public class SqlSchemaManagerTest {
          * Moves forward token.
          */
         void moveForward() {
-            moveRevision.apply(token.incrementAndGet()).join();
+            await(moveRevision.apply(token.incrementAndGet()));
         }
 
         /**
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java
index bf778cc357..8968f50fde 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.sql.engine.framework;
 
 import static 
org.apache.ignite.internal.sql.engine.util.Commons.FRAMEWORK_CONFIG;
+import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.hasSize;
 import static org.mockito.Mockito.mock;
@@ -177,7 +178,7 @@ public class TestNode implements LifecycleAware {
 
         assertThat(nodes, hasSize(1));
 
-        return prepareService.prepareAsync(nodes.get(0), 
createContext()).join();
+        return await(prepareService.prepareAsync(nodes.get(0), 
createContext()));
     }
 
     private BaseQueryContext createContext() {
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/CompositeSubscriptionTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/CompositeSubscriptionTest.java
index 85e0abdb19..a87c538e95 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/CompositeSubscriptionTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/CompositeSubscriptionTest.java
@@ -157,28 +157,27 @@ public class CompositeSubscriptionTest {
 
         lsnr.reset(requested);
 
-        CompletableFuture.runAsync(() -> compPublisher.subscribe(new 
Subscriber<>() {
-                    @Override
-                    public void onSubscribe(Subscription subscription) {
-                        subscriptionRef.set(subscription);
-                    }
-
-                    @Override
-                    public void onNext(Integer item) {
-                        lsnr.onNext(item);
-                    }
-
-                    @Override
-                    public void onError(Throwable t) {
-                        assert false;
-                    }
-
-                    @Override
-                    public void onComplete() {
-                        lsnr.onComplete();
-                    }
-                })
-        ).join();
+        compPublisher.subscribe(new Subscriber<>() {
+            @Override
+            public void onSubscribe(Subscription subscription) {
+                subscriptionRef.set(subscription);
+            }
+
+            @Override
+            public void onNext(Integer item) {
+                lsnr.onNext(item);
+            }
+
+            @Override
+            public void onError(Throwable t) {
+                assert false;
+            }
+
+            @Override
+            public void onComplete() {
+                lsnr.onComplete();
+            }
+        });
 
         if (!split) {
             checkSubscriptionRequest(subscriptionRef.get(), new 
InputParameters(expData, requested), lsnr);

Reply via email to