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

av 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 f240922349f IGNITE-22099 Delete TransactionDuplicateKeyException 
(#11354)
f240922349f is described below

commit f240922349ff4ef406ddf0885b05e3557c69f9d1
Author: Andrey Nadyktov <lordgarr...@gmail.com>
AuthorDate: Wed Jun 26 19:53:05 2024 +0300

    IGNITE-22099 Delete TransactionDuplicateKeyException (#11354)
---
 .../jdbc2/JdbcInsertStatementSelfTest.java         | 36 ++++++++++++----
 .../jdbc/thin/JdbcThinInsertStatementSelfTest.java | 37 +++++++++++-----
 .../internal/processors/odbc/SqlListenerUtils.java |  3 --
 .../internal/processors/query/QueryUtils.java      |  6 ---
 .../TransactionDuplicateKeyException.java          | 45 --------------------
 .../main/resources/META-INF/classnames.properties  |  1 -
 .../internal/processors/query/h2/dml/DmlUtils.java |  8 ++--
 .../metric/SqlStatisticsUserQueriesFastTest.java   |  5 +--
 .../cache/IgniteCacheInsertSqlQuerySelfTest.java   | 42 +++++++++++++------
 .../IgniteCacheSqlInsertValidationSelfTest.java    |  5 +--
 .../IgniteInsertNullableDuplicatesSqlTest.java     | 49 +++++++++++-----------
 11 files changed, 115 insertions(+), 122 deletions(-)

diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcInsertStatementSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcInsertStatementSelfTest.java
index 5ee18354c91..6b39ccb587d 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcInsertStatementSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcInsertStatementSelfTest.java
@@ -26,6 +26,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.concurrent.Callable;
 import org.apache.ignite.cache.CachePeekMode;
+import org.apache.ignite.internal.util.lang.RunnableX;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.Test;
@@ -154,18 +155,35 @@ public class JdbcInsertStatementSelfTest extends 
JdbcAbstractDmlStatementSelfTes
     }
 
     /**
-     *
+     * Checks whether it's impossible to insert duplicate in single key 
statement.
      */
     @Test
-    public void testDuplicateKeys() {
-        jcache(0).put("p2", new Person(2, "Joe", "Black", 35));
+    public void testDuplicateSingleKey() {
+        doTestDuplicate(
+            () -> stmt.execute(SQL),
+            "insert into Person(_key, id, firstName, lastName, age, data) 
values " +
+                "('p2', 2, 'Joe', 'Black', 35, RAWTOHEX('Black'))"
+        );
+    }
 
-        Throwable reason = GridTestUtils.assertThrows(log, new 
Callable<Object>() {
-            /** {@inheritDoc} */
-            @Override public Object call() throws Exception {
-                return stmt.execute(SQL);
-            }
-        }, SQLException.class, null);
+    /**
+     * Checks whether it's impossible to insert duplicate in multiple keys 
statement.
+     */
+    @Test
+    public void testDuplicateMultipleKeys() {
+        doTestDuplicate(
+            () -> jcache(0).put("p2", new Person(2, "Joe", "Black", 35)),
+            SQL
+        );
+    }
+
+    /**
+     *
+     */
+    private void doTestDuplicate(RunnableX initClosure, String sql) {
+        initClosure.run();
+
+        Throwable reason = GridTestUtils.assertThrows(log, () -> 
stmt.execute(sql), SQLException.class, null);
 
         reason = reason.getCause();
 
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinInsertStatementSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinInsertStatementSelfTest.java
index 44f3ddad44f..c9f46abc2b3 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinInsertStatementSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinInsertStatementSelfTest.java
@@ -23,8 +23,8 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.concurrent.Callable;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.util.lang.RunnableX;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.ListeningTestLogger;
 import org.apache.ignite.testframework.LogListener;
@@ -190,11 +190,33 @@ public class JdbcThinInsertStatementSelfTest extends 
JdbcThinAbstractDmlStatemen
     }
 
     /**
-     *
+     * Checks whether it's impossible to insert duplicate in single key 
statement.
+     */
+    @Test
+    public void testDuplicateSingleKey() throws InterruptedException {
+        doTestDuplicate(
+            () -> stmt.execute(SQL),
+            "insert into Person(_key, id, firstName, lastName, age) values " +
+                    "('p2', 2, 'Joe', 'Black', 35)"
+        );
+    }
+
+    /**
+     * Checks whether it's impossible to insert duplicate in multiple keys 
statement.
      */
     @Test
-    public void testDuplicateKeys() throws InterruptedException {
-        jcache(0).put("p2", new Person(2, "Joe", "Black", 35));
+    public void testDuplicateMultipleKeys() throws InterruptedException {
+        doTestDuplicate(
+            () -> jcache(0).put("p2", new Person(2, "Joe", "Black", 35)),
+            SQL
+        );
+    }
+
+    /**
+     *
+     */
+    private void doTestDuplicate(RunnableX initClosure, String sql) throws 
InterruptedException {
+        initClosure.run();
 
         LogListener lsnr = LogListener
             .matches("Failed to execute SQL query")
@@ -202,12 +224,7 @@ public class JdbcThinInsertStatementSelfTest extends 
JdbcThinAbstractDmlStatemen
 
         srvLog.registerListener(lsnr);
 
-        GridTestUtils.assertThrowsAnyCause(log, new Callable<Object>() {
-                /** {@inheritDoc} */
-                @Override public Object call() throws Exception {
-                    return stmt.execute(SQL);
-                }
-            }, SQLException.class,
+        GridTestUtils.assertThrowsAnyCause(log, () -> stmt.execute(sql), 
SQLException.class,
             "Failed to INSERT some keys because they are already in cache 
[keys=[p2]]");
 
         assertFalse(lsnr.check(1000L));
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/SqlListenerUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/SqlListenerUtils.java
index 891496426a5..de53c276ac5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/SqlListenerUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/SqlListenerUtils.java
@@ -31,7 +31,6 @@ import org.apache.ignite.internal.binary.GridBinaryMarshaller;
 import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
 import org.apache.ignite.internal.processors.query.IgniteSQLException;
 import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.transactions.TransactionDuplicateKeyException;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -295,8 +294,6 @@ public abstract class SqlListenerUtils {
     public static int exceptionToSqlErrorCode(Throwable e) {
         if (e instanceof QueryCancelledException)
             return IgniteQueryErrorCode.QUERY_CANCELED;
-        if (e instanceof TransactionDuplicateKeyException)
-            return IgniteQueryErrorCode.DUPLICATE_KEY;
         if (e instanceof IgniteSQLException)
             return ((IgniteSQLException)e).statusCode();
         else
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
index 27c73d6a3f9..e4efdd3b38b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
@@ -71,7 +71,6 @@ import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.transactions.TransactionDuplicateKeyException;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -1590,11 +1589,6 @@ public class QueryUtils {
 
             code = ((IgniteSQLException)e).statusCode();
         }
-        else if (e instanceof TransactionDuplicateKeyException) {
-            code = IgniteQueryErrorCode.DUPLICATE_KEY;
-
-            sqlState = IgniteQueryErrorCode.codeToSqlState(code);
-        }
         else {
             sqlState = SqlStateCode.INTERNAL_ERROR;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/transactions/TransactionDuplicateKeyException.java
 
b/modules/core/src/main/java/org/apache/ignite/transactions/TransactionDuplicateKeyException.java
deleted file mode 100644
index 55ee86734a6..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/transactions/TransactionDuplicateKeyException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.transactions;
-
-/**
- * Exception thrown whenever transaction tries to inserts entry with same mvcc 
version more than once.
- */
-public class TransactionDuplicateKeyException extends TransactionException {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /**
-     * Creates new duplicate ket exception with given error message.
-     *
-     * @param msg Error message.\
-     * @param cause Optional nested exception (can be {@code null}).
-     */
-    public TransactionDuplicateKeyException(String msg, Exception cause) {
-        super(msg, cause);
-    }
-
-    /**
-     * Creates new duplicate ket exception with given error message.
-     *
-     * @param msg Error message.
-     */
-    public TransactionDuplicateKeyException(String msg) {
-        super(msg);
-    }
-}
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties 
b/modules/core/src/main/resources/META-INF/classnames.properties
index 7a45d5841c8..70e1e4eab8c 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -2417,7 +2417,6 @@ org.apache.ignite.stream.StreamVisitor
 org.apache.ignite.stream.StreamVisitor$1
 org.apache.ignite.transactions.TransactionConcurrency
 org.apache.ignite.transactions.TransactionDeadlockException
-org.apache.ignite.transactions.TransactionDuplicateKeyException
 org.apache.ignite.transactions.TransactionException
 org.apache.ignite.transactions.TransactionHeuristicException
 org.apache.ignite.transactions.TransactionIsolation
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
index e5d3d4e90b2..1cfd895fac4 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
@@ -51,7 +51,6 @@ import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgniteInClosure;
-import org.apache.ignite.transactions.TransactionDuplicateKeyException;
 import org.h2.util.DateTimeUtils;
 import org.h2.util.LocalDateTimeUtils;
 import org.h2.value.Value;
@@ -196,6 +195,8 @@ public class DmlUtils {
     private static long dmlDoInsert(UpdatePlan plan, Iterable<List<?>> cursor, 
int pageSize) throws IgniteCheckedException {
         GridCacheContext cctx = plan.cacheContext();
 
+        final String errMsg = "Failed to INSERT some keys because they are 
already in cache [keys=";
+
         // If we have just one item to put, just do so
         if (plan.rowCount() == 1) {
             IgniteBiTuple t = plan.processRow(cursor.iterator().next());
@@ -208,7 +209,7 @@ public class DmlUtils {
                 if (cctx.cache().putIfAbsent(t.getKey(), t.getValue()))
                     return 1;
                 else
-                    throw new TransactionDuplicateKeyException("Duplicate key 
during INSERT [key=" + t.getKey() + ']');
+                    throw new IgniteSQLException(errMsg + '[' + t.getKey() + 
"]]", DUPLICATE_KEY);
             }
         }
         else {
@@ -226,8 +227,7 @@ public class DmlUtils {
             SQLException resEx = snd.error();
 
             if (!F.isEmpty(snd.failedKeys())) {
-                String msg = "Failed to INSERT some keys because they are 
already in cache " +
-                    "[keys=" + snd.failedKeys() + ']';
+                String msg = errMsg + snd.failedKeys() + ']';
 
                 SQLException dupEx = new SQLException(msg, 
SqlStateCode.CONSTRAINT_VIOLATION);
 
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/metric/SqlStatisticsUserQueriesFastTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/metric/SqlStatisticsUserQueriesFastTest.java
index 36101662046..e5f957cb5b0 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/metric/SqlStatisticsUserQueriesFastTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/metric/SqlStatisticsUserQueriesFastTest.java
@@ -30,7 +30,6 @@ import org.apache.ignite.cache.query.SqlQuery;
 import org.apache.ignite.internal.processors.query.IgniteSQLException;
 import org.apache.ignite.internal.processors.query.running.RunningQueryManager;
 import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.transactions.TransactionDuplicateKeyException;
 import org.junit.Test;
 
 import static org.apache.ignite.internal.util.IgniteUtils.resolveIgnitePath;
@@ -147,8 +146,8 @@ public class SqlStatisticsUserQueriesFastTest extends 
UserQueriesTestBase {
         assertMetricsIncrementedOnlyOnReducer(() -> 
GridTestUtils.assertThrowsAnyCause(
             log,
             () -> cache.query(new SqlFieldsQuery("INSERT INTO TAB VALUES(5, 'I 
will NOT be inserted')")).getAll(),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT"),
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache"),
             "failed");
     }
 
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInsertSqlQuerySelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInsertSqlQuerySelfTest.java
index c0dba13e968..cfe59d025eb 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInsertSqlQuerySelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInsertSqlQuerySelfTest.java
@@ -20,7 +20,7 @@ package org.apache.ignite.internal.processors.cache;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.UUID;
-import java.util.concurrent.Callable;
+import java.util.function.Consumer;
 import javax.cache.CacheException;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.query.SqlFieldsQuery;
@@ -172,25 +172,41 @@ public class IgniteCacheInsertSqlQuerySelfTest extends 
IgniteCacheAbstractInsert
     }
 
     /**
-     *
+     * Checks whether it's impossible to insert duplicate in single key 
statement.
      */
     @Test
-    public void testDuplicateKeysException() {
+    public void testDuplicateSingleKey() {
+        doTestDuplicate(
+            p -> p.query(new SqlFieldsQuery("insert into Integer(_key, _val) 
values (1, ?), " +
+                "(?, 5), (5, 6)").setArgs(2, 3)),
+            new SqlFieldsQuery("insert into Integer(_key, _val) values (?, 
?)").setArgs(3, 5)
+        );
+    }
+
+    /**
+     *  Checks whether it's impossible to insert duplicate in multiple keys 
statement.
+     */
+    @Test
+    public void testDuplicateMultipleKeys() {
+        doTestDuplicate(
+            p -> p.put(3, 5),
+            new SqlFieldsQuery("insert into Integer(_key, _val) values (1, ?), 
" +
+                "(?, 4), (5, 6)").setArgs(2, 3)
+        );
+    }
+
+    /**
+     *
+     */
+    private void doTestDuplicate(Consumer<IgniteCache<Integer, Integer>> 
initAction, SqlFieldsQuery sql) {
         final IgniteCache<Integer, Integer> p = ignite(0).cache("I2I");
 
         p.clear();
 
-        p.put(3, 5);
-
-        GridTestUtils.assertThrows(log, new Callable<Void>() {
-            /** {@inheritDoc} */
-            @Override public Void call() throws Exception {
-                p.query(new SqlFieldsQuery("insert into Integer(_key, _val) 
values (1, ?), " +
-                    "(?, 4), (5, 6)").setArgs(2, 3));
+        initAction.accept(p);
 
-                return null;
-            }
-        }, CacheException.class, "Failed to INSERT some keys because they are 
already in cache [keys=[3]]");
+        GridTestUtils.assertThrows(log, () -> p.query(sql), 
CacheException.class,
+            "Failed to INSERT some keys because they are already in cache 
[keys=[3]]");
 
         assertEquals(2, (int)p.get(1));
         assertEquals(5, (int)p.get(3));
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheSqlInsertValidationSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheSqlInsertValidationSelfTest.java
index 94113a73559..c3cb6546f75 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheSqlInsertValidationSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheSqlInsertValidationSelfTest.java
@@ -36,7 +36,6 @@ import 
org.apache.ignite.internal.processors.cache.index.AbstractIndexingCommonT
 import org.apache.ignite.internal.processors.query.IgniteSQLException;
 import org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder;
 import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.transactions.TransactionDuplicateKeyException;
 import org.junit.Test;
 
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
@@ -149,8 +148,8 @@ public class IgniteCacheSqlInsertValidationSelfTest extends 
AbstractIndexingComm
 
         GridTestUtils.assertThrows(log(),
             () -> execute("INSERT INTO FORGOTTEN_KEY_FLDS(FK1, FK2, FV1, FV2) 
VALUES (8,9,10,11)"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
     }
 
     /**
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteInsertNullableDuplicatesSqlTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteInsertNullableDuplicatesSqlTest.java
index ecfa5df71e7..caf1c2c67fd 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteInsertNullableDuplicatesSqlTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteInsertNullableDuplicatesSqlTest.java
@@ -28,7 +28,6 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.configuration.CacheConfiguration;
 import 
org.apache.ignite.internal.processors.cache.index.AbstractIndexingCommonTest;
 import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.transactions.TransactionDuplicateKeyException;
 import org.junit.Test;
 
 import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
@@ -69,13 +68,13 @@ public class IgniteInsertNullableDuplicatesSqlTest extends 
AbstractIndexingCommo
         
         assertThrows(log,
             () -> sql("insert into test (id1, id2, val) values (1, null, 1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertThrows(log,
             () -> sql("insert into test (id1, val) values (1, 1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertEquals(sql("SELECT * FROM test").getAll().size(), 1);
     }
@@ -90,18 +89,18 @@ public class IgniteInsertNullableDuplicatesSqlTest extends 
AbstractIndexingCommo
         
         assertThrows(log,
             () -> sql("insert into test (id1, val) values (null, 1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertThrows(log,
             () -> sql("insert into test (id2, val) values (null, 1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertThrows(log,
             () -> sql("insert into test (id2, id1, val) values (null, null, 
1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertEquals(sql("SELECT * FROM test").getAll().size(), 1);
     }
@@ -115,8 +114,8 @@ public class IgniteInsertNullableDuplicatesSqlTest extends 
AbstractIndexingCommo
         sql("insert into test (val) values (1);");
         assertThrows(log,
             () -> sql("insert into test (val) values (1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
     }
 
     /**
@@ -131,13 +130,13 @@ public class IgniteInsertNullableDuplicatesSqlTest 
extends AbstractIndexingCommo
     
         assertThrows(log,
                 () -> sql("insert into test (id1, val) values (0, 1);"),
-                TransactionDuplicateKeyException.class,
-                "Duplicate key during INSERT");
+                IgniteSQLException.class,
+                "Failed to INSERT some keys because they are already in 
cache");
     
         assertThrows(log,
                 () -> sql("insert into test (val) values (2);"),
-                TransactionDuplicateKeyException.class,
-                "Duplicate key during INSERT");
+                IgniteSQLException.class,
+                "Failed to INSERT some keys because they are already in 
cache");
     
         List<List<?>> sql = sql("select * from test order by val 
asc;").getAll();
     
@@ -183,13 +182,13 @@ public class IgniteInsertNullableDuplicatesSqlTest 
extends AbstractIndexingCommo
     
         assertThrows(log,
                 () -> sql("insert into test (id1, val) values (0, 1);"),
-                TransactionDuplicateKeyException.class,
-                "Duplicate key during INSERT");
+                IgniteSQLException.class,
+                "Failed to INSERT some keys because they are already in 
cache");
         
         assertThrows(log,
                 () -> sql("insert into test (val) values (2);"),
-                TransactionDuplicateKeyException.class,
-                "Duplicate key during INSERT");
+                IgniteSQLException.class,
+                "Failed to INSERT some keys because they are already in 
cache");
         
         List<List<?>> sql = sql("select * from test order by val 
asc;").getAll();
     
@@ -232,13 +231,13 @@ public class IgniteInsertNullableDuplicatesSqlTest 
extends AbstractIndexingCommo
 
         assertThrows(log,
             () -> sql("insert into test (id1, id2, val) values (1, null, 1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertThrows(log,
             () -> sql("insert into test (id1, val) values (1, 1);"),
-            TransactionDuplicateKeyException.class,
-            "Duplicate key during INSERT");
+            IgniteSQLException.class,
+            "Failed to INSERT some keys because they are already in cache");
 
         assertEquals(sql("SELECT * FROM test").getAll().size(), 1);
     }

Reply via email to