You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pp...@apache.org on 2022/09/26 14:22:36 UTC
[ignite-3] branch main updated: IGNITE-17687 Get rid of using deprecated exception constructors in the sql-engine module (#1114)
This is an automated email from the ASF dual-hosted git repository.
ppa 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 16c407504e IGNITE-17687 Get rid of using deprecated exception constructors in the sql-engine module (#1114)
16c407504e is described below
commit 16c407504e49029b7fa5a1d18043d6d2dc0a8fe1
Author: Pavel Pereslegin <xx...@gmail.com>
AuthorDate: Mon Sep 26 17:22:31 2022 +0300
IGNITE-17687 Get rid of using deprecated exception constructors in the sql-engine module (#1114)
---
.../java/org/apache/ignite/lang/ErrorGroups.java | 71 +++++++++++++++++++++-
.../ignite/internal/sql/api/SessionImpl.java | 12 ++--
.../ignite/internal/sql/engine/QueryCancel.java | 5 +-
.../sql/engine/QueryCancelledException.java | 4 +-
.../internal/sql/engine/SqlQueryProcessor.java | 14 +++--
.../sql/engine/exec/ExchangeServiceImpl.java | 5 +-
.../engine/exec/ExecutionCancelledException.java | 8 +++
.../internal/sql/engine/exec/ExecutionContext.java | 5 +-
.../sql/engine/exec/ExecutionServiceImpl.java | 16 +++--
.../sql/engine/exec/QueryValidationException.java | 6 +-
.../sql/engine/exec/ddl/DdlCommandHandler.java | 8 ++-
.../internal/sql/engine/exec/rel/AbstractNode.java | 3 +-
.../sql/engine/exec/rel/HashAggregateNode.java | 3 +-
.../ignite/internal/sql/engine/exec/rel/Inbox.java | 5 +-
.../internal/sql/engine/exec/rel/RootNode.java | 6 +-
.../internal/sql/engine/externalize/RelJson.java | 8 ++-
.../sql/engine/externalize/RelJsonReader.java | 6 +-
.../sql/engine/externalize/RelJsonWriter.java | 6 +-
.../sql/engine/message/MessageServiceImpl.java | 7 ++-
.../internal/sql/engine/prepare/IgnitePlanner.java | 4 +-
.../sql/engine/prepare/PrepareServiceImpl.java | 6 +-
.../internal/sql/engine/prepare/QueryTemplate.java | 5 +-
.../prepare/ddl/DdlSqlToCommandConverter.java | 20 +++---
.../sql/engine/schema/SqlSchemaManagerImpl.java | 10 ++-
.../ignite/internal/sql/engine/util/Commons.java | 4 +-
.../sql/engine/exec/ExecutionServiceImplTest.java | 5 +-
26 files changed, 189 insertions(+), 63 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java b/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
index 0fb2f6d56f..2e582e1532 100755
--- a/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
+++ b/modules/core/src/main/java/org/apache/ignite/lang/ErrorGroups.java
@@ -118,8 +118,77 @@ public class ErrorGroups {
/** Cursor is already closed error. */
public static final int CURSOR_CLOSED_ERR = SQL_ERR_GROUP.registerErrorCode(9);
- /** Some keys can't be inserted because they violates unique constraint PK. */
+ /** Constraint violation: some keys can't be inserted because they violate unique constraint PK. */
public static final int DUPLICATE_KEYS_ERR = SQL_ERR_GROUP.registerErrorCode(10);
+
+ /** Constraint violation: deleting a column that belongs to the primary key. */
+ public static final int DEL_PK_COMUMN_CONSTRAINT_ERR = SQL_ERR_GROUP.registerErrorCode(11);
+
+ /** Too many grouping expressions. */
+ public static final int TOO_MANY_GROUPING_EXPRESSIONS_ERR = SQL_ERR_GROUP.registerErrorCode(12);
+
+ /** Unsupported sql operation. */
+ public static final int USUPPORTED_SQL_OPERATION_KIND_ERR = SQL_ERR_GROUP.registerErrorCode(13);
+
+ /** Unsupported DDL operation. */
+ public static final int UNSUPPORTED_DDL_OPERATION_ERR = SQL_ERR_GROUP.registerErrorCode(14);
+
+ /** Query validation error. */
+ public static final int QUERY_VALIDATION_ERR = SQL_ERR_GROUP.registerErrorCode(15);
+
+ /** Table not found. */
+ public static final int TABLE_NOT_FOUND_ERR = SQL_ERR_GROUP.registerErrorCode(16);
+
+ /** Table version not found. */
+ public static final int TABLE_VER_NOT_FOUND_ERR = SQL_ERR_GROUP.registerErrorCode(17);
+
+ /** Invalid table option. */
+ public static final int TABLE_OPTION_ERR = SQL_ERR_GROUP.registerErrorCode(18);
+
+ /** Query mapping error. */
+ public static final int QUERY_MAPPING_ERR = SQL_ERR_GROUP.registerErrorCode(19);
+
+ /** DDL execution error. */
+ public static final int DDL_EXEC_ERR = SQL_ERR_GROUP.registerErrorCode(20);
+
+ /** DML result error. */
+ public static final int INVALID_DML_RESULT_ERR = SQL_ERR_GROUP.registerErrorCode(21);
+
+ /** SQL data type to relational conversion error. */
+ public static final int SQL_TO_REL_CONVERSION_ERR = SQL_ERR_GROUP.registerErrorCode(22);
+
+ /** Relational expression serialization error. */
+ public static final int REL_SERIALIZATION_ERR = SQL_ERR_GROUP.registerErrorCode(23);
+
+ /** Relational expression deserialization error. */
+ public static final int REL_DESERIALIZATION_ERR = SQL_ERR_GROUP.registerErrorCode(24);
+
+ /** Class not found error. */
+ public static final int CLASS_NOT_FOUND_ERR = SQL_ERR_GROUP.registerErrorCode(25);
+
+ /** Expression compilation error. */
+ public static final int EXPRESSION_COMPILATION_ERR = SQL_ERR_GROUP.registerErrorCode(26);
+
+ /** Node left the cluster. */
+ public static final int NODE_LEFT_ERR = SQL_ERR_GROUP.registerErrorCode(27);
+
+ /** Message send error. */
+ public static final int MESSAGE_SEND_ERR = SQL_ERR_GROUP.registerErrorCode(28);
+
+ /** Operation aborted/interrupted error. */
+ public static final int OPERATION_INTERRUPTED_ERR = SQL_ERR_GROUP.registerErrorCode(29);
+
+ /** An error occurred while canceling the operation. */
+ public static final int CANCEL_OPERATION_ERR = SQL_ERR_GROUP.registerErrorCode(30);
+
+ /** Session expired error. */
+ public static final int SESSION_EXPIRED_ERR = SQL_ERR_GROUP.registerErrorCode(31);
+
+ /** Session evaluation error. */
+ public static final int SCHEMA_EVALUATION_ERR = SQL_ERR_GROUP.registerErrorCode(32);
+
+ /** Execution cancelled. */
+ public static final int EXECUTION_CANCELLED_ERR = SQL_ERR_GROUP.registerErrorCode(33);
}
/** Meta storage error group. */
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/SessionImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/SessionImpl.java
index 21d0e9ae93..55a89bb227 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/SessionImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/api/SessionImpl.java
@@ -17,7 +17,9 @@
package org.apache.ignite.internal.sql.api;
-import static org.apache.ignite.lang.ErrorGroups.Common.UNKNOWN_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Common.UNEXPECTED_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.INVALID_DML_RESULT_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.OPERATION_INTERRUPTED_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_INVALID_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.SESSION_NOT_FOUND_ERR;
@@ -245,7 +247,7 @@ public class SessionImpl implements Session {
Throwable cause = ExceptionUtils.unwrapCause(ex);
throw new SqlBatchException(
- cause instanceof IgniteException ? ((IgniteException) cause).code() : UNKNOWN_ERR,
+ cause instanceof IgniteException ? ((IgniteException) cause).code() : UNEXPECTED_ERR,
counters.toArray(ArrayUtils.LONG_EMPTY_ARRAY),
ex);
})
@@ -333,9 +335,9 @@ public class SessionImpl implements Session {
try {
return stage.toCompletableFuture().get();
} catch (ExecutionException e) {
- throw new IgniteException(e.getCause());
+ throw new SqlException(OPERATION_INTERRUPTED_ERR, e.getCause());
} catch (Throwable e) {
- throw new IgniteException(e);
+ throw new SqlException(OPERATION_INTERRUPTED_ERR, e);
}
}
@@ -351,7 +353,7 @@ public class SessionImpl implements Session {
|| page.items().size() != 1
|| page.items().get(0).size() != 1
|| page.hasMore()) {
- throw new SqlException(UNKNOWN_ERR, "Invalid DML results: " + page);
+ throw new SqlException(INVALID_DML_RESULT_ERR, "Invalid DML results: " + page);
}
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancel.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancel.java
index d35522cd54..254cc6798a 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancel.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancel.java
@@ -17,10 +17,13 @@
package org.apache.ignite.internal.sql.engine;
+import static org.apache.ignite.lang.ErrorGroups.Sql.CANCEL_OPERATION_ERR;
+
import java.util.ArrayList;
import java.util.List;
import org.apache.ignite.internal.util.Cancellable;
import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.SqlException;
/**
* Holds query cancel state.
@@ -65,7 +68,7 @@ public class QueryCancel {
act.cancel();
} catch (Exception e) {
if (ex == null) {
- ex = new IgniteException(e);
+ ex = new SqlException(CANCEL_OPERATION_ERR, e);
} else {
ex.addSuppressed(e);
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancelledException.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancelledException.java
index 44168b424b..56d2ddd9ba 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancelledException.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/QueryCancelledException.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.sql.engine;
+import static org.apache.ignite.lang.ErrorGroups.Sql.OPERATION_INTERRUPTED_ERR;
+
import org.apache.ignite.lang.IgniteException;
/**
@@ -31,6 +33,6 @@ public class QueryCancelledException extends IgniteException {
* Default constructor.
*/
public QueryCancelledException() {
- super(ERR_MSG);
+ super(OPERATION_INTERRUPTED_ERR, ERR_MSG);
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
index 1b6bc83fc9..534402ea3f 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
@@ -18,7 +18,10 @@
package org.apache.ignite.internal.sql.engine;
import static org.apache.ignite.internal.sql.engine.util.Commons.FRAMEWORK_CONFIG;
+import static org.apache.ignite.lang.ErrorGroups.Sql.OPERATION_INTERRUPTED_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_INVALID_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.SCHEMA_NOT_FOUND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.SESSION_EXPIRED_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.SESSION_NOT_FOUND_ERR;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
@@ -282,7 +285,7 @@ public class SqlQueryProcessor implements QueryProcessor {
public List<CompletableFuture<AsyncSqlCursor<List<Object>>>> queryAsync(QueryContext context, String schemaName,
String qry, Object... params) {
if (!busyLock.enterBusy()) {
- throw new IgniteInternalException(new NodeStoppingException());
+ throw new IgniteInternalException(OPERATION_INTERRUPTED_ERR, new NodeStoppingException());
}
try {
@@ -298,7 +301,7 @@ public class SqlQueryProcessor implements QueryProcessor {
SessionId sessionId, QueryContext context, String qry, Object... params
) {
if (!busyLock.enterBusy()) {
- throw new IgniteInternalException(new NodeStoppingException());
+ throw new IgniteInternalException(OPERATION_INTERRUPTED_ERR, new NodeStoppingException());
}
try {
@@ -344,7 +347,8 @@ public class SqlQueryProcessor implements QueryProcessor {
SchemaPlus schema = sqlSchemaManager.schema(schemaName);
if (schema == null) {
- return CompletableFuture.failedFuture(new IgniteInternalException(format("Schema not found [schemaName={}]", schemaName)));
+ return CompletableFuture.failedFuture(
+ new IgniteInternalException(SCHEMA_NOT_FOUND_ERR, format("Schema not found [schemaName={}]", schemaName)));
}
InternalTransaction outerTx = context.unwrap(InternalTransaction.class);
@@ -361,7 +365,7 @@ public class SqlQueryProcessor implements QueryProcessor {
try {
session.registerResource(closeableResource);
} catch (IllegalStateException ex) {
- return CompletableFuture.failedFuture(new IgniteInternalException(
+ return CompletableFuture.failedFuture(new IgniteInternalException(SESSION_EXPIRED_ERR,
format("Session has been expired [{}]", session.sessionId()), ex));
}
@@ -449,7 +453,7 @@ public class SqlQueryProcessor implements QueryProcessor {
SchemaPlus schema = sqlSchemaManager.schema(schemaName);
if (schema == null) {
- throw new IgniteInternalException(format("Schema not found [schemaName={}]", schemaName));
+ throw new IgniteInternalException(SCHEMA_NOT_FOUND_ERR, format("Schema not found [schemaName={}]", schemaName));
}
SqlNodeList nodes = Commons.parse(sql, FRAMEWORK_CONFIG.getParserConfig());
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExchangeServiceImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExchangeServiceImpl.java
index d862ccdaf0..1ec7f53dc0 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExchangeServiceImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExchangeServiceImpl.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine.exec;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Common.UNEXPECTED_ERR;
import it.unimi.dsi.fastutil.longs.Long2ObjectMaps;
import java.util.Collection;
@@ -176,7 +177,7 @@ public class ExchangeServiceImpl implements ExchangeService {
} catch (Throwable e) {
outbox.onError(e);
- throw new IgniteInternalException("Unexpected exception", e);
+ throw new IgniteInternalException(UNEXPECTED_ERR, "Unexpected exception", e);
}
} else if (LOG.isDebugEnabled()) {
LOG.debug("Stale acknowledge message received: [nodeId={}, queryId={}, fragmentId={}, exchangeId={}, batchId={}]",
@@ -202,7 +203,7 @@ public class ExchangeServiceImpl implements ExchangeService {
} catch (Throwable e) {
inbox.onError(e);
- throw new IgniteInternalException("Unexpected exception", e);
+ throw new IgniteInternalException(UNEXPECTED_ERR, "Unexpected exception", e);
}
} else if (LOG.isDebugEnabled()) {
LOG.debug("Stale batch message received: [nodeId={}, queryId={}, fragmentId={}, exchangeId={}, batchId={}]",
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionCancelledException.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionCancelledException.java
index b9ffe00585..d4dd4fe2ac 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionCancelledException.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionCancelledException.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.sql.engine.exec;
+import static org.apache.ignite.lang.ErrorGroups.Sql.EXECUTION_CANCELLED_ERR;
+
import org.apache.ignite.lang.IgniteInternalCheckedException;
/**
@@ -24,4 +26,10 @@ import org.apache.ignite.lang.IgniteInternalCheckedException;
* TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
*/
public class ExecutionCancelledException extends IgniteInternalCheckedException {
+ /**
+ * Constructs a new exception with null as its detail message.
+ */
+ public ExecutionCancelledException() {
+ super(EXECUTION_CANCELLED_ERR);
+ }
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionContext.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionContext.java
index 98b9dba1db..6487ea5f0d 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionContext.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionContext.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine.exec;
import static org.apache.ignite.internal.sql.engine.util.Commons.checkRange;
+import static org.apache.ignite.lang.ErrorGroups.Common.UNEXPECTED_ERR;
import java.util.List;
import java.util.Locale;
@@ -305,7 +306,7 @@ public class ExecutionContext<RowT> extends AbstractQueryContext implements Data
} catch (Throwable e) {
onError.accept(e);
- throw new IgniteInternalException("Unexpected exception", e);
+ throw new IgniteInternalException(UNEXPECTED_ERR, "Unexpected exception", e);
}
});
}
@@ -326,7 +327,7 @@ public class ExecutionContext<RowT> extends AbstractQueryContext implements Data
} catch (Throwable e) {
onError.accept(e);
- throw new IgniteInternalException("Unexpected exception", e);
+ throw new IgniteInternalException(UNEXPECTED_ERR, "Unexpected exception", e);
}
});
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java
index 60c44c413f..c2afd25a9d 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java
@@ -20,6 +20,9 @@ package org.apache.ignite.internal.sql.engine.exec;
import static org.apache.ignite.internal.sql.engine.externalize.RelJsonReader.fromJson;
import static org.apache.ignite.internal.sql.engine.util.Commons.FRAMEWORK_CONFIG;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Sql.DDL_EXEC_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.MESSAGE_SEND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.NODE_LEFT_ERR;
import java.util.ArrayList;
import java.util.HashMap;
@@ -71,12 +74,12 @@ import org.apache.ignite.internal.sql.engine.util.TypeUtils;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.table.distributed.TableManager;
import org.apache.ignite.internal.tx.InternalTransaction;
-import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.IgniteInternalCheckedException;
import org.apache.ignite.lang.IgniteInternalException;
import org.apache.ignite.network.ClusterNode;
import org.apache.ignite.network.TopologyEventHandler;
import org.apache.ignite.network.TopologyService;
+import org.apache.ignite.sql.SqlException;
import org.jetbrains.annotations.Nullable;
/**
@@ -272,11 +275,11 @@ public class ExecutionServiceImpl<RowT> implements ExecutionService, TopologyEve
}
if (e instanceof IgniteInternalCheckedException) {
- return new IgniteInternalException("Failed to execute DDL statement [stmt=" /*+ qry.sql()*/
+ return new IgniteInternalException(DDL_EXEC_ERR, "Failed to execute DDL statement [stmt=" /*+ qry.sql()*/
+ ", err=" + e.getMessage() + ']', e);
}
- return (e instanceof RuntimeException) ? (RuntimeException) e : new IgniteException(e);
+ return (e instanceof RuntimeException) ? (RuntimeException) e : new SqlException(DDL_EXEC_ERR, e);
}
private AsyncCursor<List<Object>> executeExplain(ExplainPlan plan) {
@@ -464,7 +467,8 @@ public class ExecutionServiceImpl<RowT> implements ExecutionService, TopologyEve
private void onNodeLeft(String nodeId) {
remoteFragmentInitCompletion.entrySet().stream().filter(e -> nodeId.equals(e.getKey().nodeId()))
.forEach(e -> e.getValue()
- .completeExceptionally(new IgniteInternalException("Node left the cluster [nodeId=" + nodeId + "]")));
+ .completeExceptionally(new IgniteInternalException(
+ NODE_LEFT_ERR, "Node left the cluster [nodeId=" + nodeId + "]")));
}
private void executeFragment(FragmentPlan plan, ExecutionContext<RowT> ectx) {
@@ -504,7 +508,7 @@ public class ExecutionServiceImpl<RowT> implements ExecutionService, TopologyEve
.build()
);
} catch (IgniteInternalCheckedException e) {
- throw new IgniteInternalException("Failed to send reply. [nodeId=" + origNodeId + ']', e);
+ throw new IgniteInternalException(MESSAGE_SEND_ERR, "Failed to send reply. [nodeId=" + origNodeId + ']', e);
}
if (node instanceof Outbox) {
@@ -650,7 +654,7 @@ public class ExecutionServiceImpl<RowT> implements ExecutionService, TopologyEve
try {
exchangeSrvc.closeQuery(nodeId, ctx.queryId());
} catch (IgniteInternalCheckedException e) {
- throw new IgniteInternalException(
+ throw new IgniteInternalException(MESSAGE_SEND_ERR,
"Failed to send cancel message. [nodeId=" + nodeId + ']', e);
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/QueryValidationException.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/QueryValidationException.java
index dcffff0b2d..d291dfa4b2 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/QueryValidationException.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/QueryValidationException.java
@@ -17,10 +17,12 @@
package org.apache.ignite.internal.sql.engine.exec;
+import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_VALIDATION_ERR;
+
import org.apache.ignite.lang.IgniteInternalException;
/**
- * StatementMismatchException is used during query validation.
+ * QueryValidationException is used during query validation.
*
* <p>The exception is used when the expected query type does not match the actual query type obtained after parsing a sql string.
*/
@@ -31,6 +33,6 @@ public class QueryValidationException extends IgniteInternalException {
* @param msg Error message.
*/
public QueryValidationException(String msg) {
- super(msg);
+ super(QUERY_VALIDATION_ERR, msg);
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
index c90cda813f..d0a2739d31 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.sql.engine.exec.ddl;
import static java.util.concurrent.CompletableFuture.completedFuture;
import static java.util.concurrent.CompletableFuture.failedFuture;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Sql.DEL_PK_COMUMN_CONSTRAINT_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.UNSUPPORTED_DDL_OPERATION_ERR;
import java.util.HashMap;
import java.util.HashSet;
@@ -75,11 +77,11 @@ import org.apache.ignite.internal.util.IgniteObjectName;
import org.apache.ignite.internal.util.StringUtils;
import org.apache.ignite.lang.ColumnAlreadyExistsException;
import org.apache.ignite.lang.ColumnNotFoundException;
-import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.IgniteInternalCheckedException;
import org.apache.ignite.lang.IgniteStringFormatter;
import org.apache.ignite.lang.TableAlreadyExistsException;
import org.apache.ignite.lang.TableNotFoundException;
+import org.apache.ignite.sql.SqlException;
/** DDL commands handler. */
public class DdlCommandHandler {
@@ -119,7 +121,7 @@ public class DdlCommandHandler {
} else if (cmd instanceof DropIndexCommand) {
return handleDropIndex((DropIndexCommand) cmd);
} else {
- return failedFuture(new IgniteInternalCheckedException("Unsupported DDL operation ["
+ return failedFuture(new IgniteInternalCheckedException(UNSUPPORTED_DDL_OPERATION_ERR, "Unsupported DDL operation ["
+ "cmdName=" + (cmd == null ? null : cmd.getClass().getSimpleName()) + "; "
+ "cmd=\"" + cmd + "\"]"));
}
@@ -406,7 +408,7 @@ public class DdlCommandHandler {
}
if (primaryCols.contains(colName)) {
- throw new IgniteException(IgniteStringFormatter
+ throw new SqlException(DEL_PK_COMUMN_CONSTRAINT_ERR, IgniteStringFormatter
.format("Can`t delete column, belongs to primary key: [name={}]", colName));
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractNode.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractNode.java
index 079e49228b..33c73bf8f9 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractNode.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/AbstractNode.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine.exec.rel;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Sql.OPERATION_INTERRUPTED_ERR;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
import java.util.Collection;
@@ -175,7 +176,7 @@ public abstract class AbstractNode<RowT> implements Node<RowT> {
throw new ExecutionCancelledException();
}
if (Thread.interrupted()) {
- throw new IgniteInternalCheckedException("Thread was interrupted.");
+ throw new IgniteInternalCheckedException(OPERATION_INTERRUPTED_ERR, "Thread was interrupted.");
}
if (!IgniteUtils.assertionsEnabled()) {
return;
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateNode.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateNode.java
index ce155f8b76..e1d60a088d 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateNode.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/HashAggregateNode.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.sql.engine.exec.rel;
import static java.util.stream.Collectors.toCollection;
import static org.apache.ignite.internal.sql.engine.util.Commons.negate;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Sql.TOO_MANY_GROUPING_EXPRESSIONS_ERR;
import java.util.ArrayDeque;
import java.util.ArrayList;
@@ -80,7 +81,7 @@ public class HashAggregateNode<RowT> extends AbstractNode<RowT> implements Singl
ImmutableBitSet.Builder b = ImmutableBitSet.builder();
if (grpSets.size() > Byte.MAX_VALUE) {
- throw new IgniteInternalException("Too many groups");
+ throw new IgniteInternalException(TOO_MANY_GROUPING_EXPRESSIONS_ERR, "Too many groups");
}
groupings = new ArrayList<>(grpSets.size());
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/Inbox.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/Inbox.java
index ebdb387f09..4e40d18cdc 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/Inbox.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/Inbox.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine.exec.rel;
import static org.apache.calcite.util.Util.unexpected;
+import static org.apache.ignite.lang.ErrorGroups.Sql.NODE_LEFT_ERR;
import java.util.Collection;
import java.util.Comparator;
@@ -358,13 +359,13 @@ public class Inbox<RowT> extends AbstractNode<RowT> implements Mailbox<RowT>, Si
checkState();
if (getOrCreateBuffer(nodeId).check() != State.END) {
- throw new IgniteInternalCheckedException("Failed to execute query, node left [nodeId=" + nodeId + ']');
+ throw new IgniteInternalCheckedException(NODE_LEFT_ERR, "Failed to execute query, node left [nodeId=" + nodeId + ']');
}
}
private void checkNode(String nodeId) throws IgniteInternalCheckedException {
if (!exchange.alive(nodeId)) {
- throw new IgniteInternalCheckedException("Failed to execute query, node left [nodeId=" + nodeId + ']');
+ throw new IgniteInternalCheckedException(NODE_LEFT_ERR, "Failed to execute query, node left [nodeId=" + nodeId + ']');
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/RootNode.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/RootNode.java
index 6991dfe142..ab4f7fc559 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/RootNode.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/RootNode.java
@@ -18,6 +18,8 @@
package org.apache.ignite.internal.sql.engine.exec.rel;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Common.UNEXPECTED_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.OPERATION_INTERRUPTED_ERR;
import java.util.ArrayDeque;
import java.util.Deque;
@@ -257,7 +259,7 @@ public class RootNode<RowT> extends AbstractNode<RowT> implements SingleNode<Row
cond.await();
}
} catch (InterruptedException e) {
- throw new IgniteInternalException(e);
+ throw new IgniteInternalException(OPERATION_INTERRUPTED_ERR, e);
} finally {
lock.unlock();
}
@@ -275,7 +277,7 @@ public class RootNode<RowT> extends AbstractNode<RowT> implements SingleNode<Row
if (e instanceof RuntimeException) {
throw (RuntimeException) e;
} else {
- throw new IgniteInternalException("An error occurred while query executing.", e);
+ throw new IgniteInternalException(UNEXPECTED_ERR, "An error occurred while query executing.", e);
}
// TODO: rework with SQL error code
// if (e instanceof IgniteSQLException)
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJson.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJson.java
index a91e0a1da2..fbe8f67a5c 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJson.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJson.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.sql.engine.externalize;
import static org.apache.ignite.internal.sql.engine.util.Commons.FRAMEWORK_CONFIG;
import static org.apache.ignite.internal.util.ArrayUtils.asList;
import static org.apache.ignite.internal.util.IgniteUtils.igniteClassLoader;
+import static org.apache.ignite.lang.ErrorGroups.Sql.CLASS_NOT_FOUND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.REL_DESERIALIZATION_ERR;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
@@ -110,7 +112,7 @@ import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.util.Commons;
import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.SqlException;
/**
* Utilities for converting {@link RelNode} into JSON format.
@@ -150,7 +152,7 @@ class RelJson {
try {
constructor = (Constructor<RelNode>) clazz.getConstructor(RelInput.class);
} catch (NoSuchMethodException e) {
- throw new IgniteException("class does not have required constructor, "
+ throw new SqlException(REL_DESERIALIZATION_ERR, "class does not have required constructor, "
+ clazz + "(RelInput)");
}
@@ -204,7 +206,7 @@ class RelJson {
return IgniteUtils.forName(typeName, igniteClassLoader());
} catch (ClassNotFoundException e) {
if (!skipNotFound) {
- throw new IgniteException("unknown type " + typeName);
+ throw new SqlException(CLASS_NOT_FOUND_ERR, "unknown type " + typeName);
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonReader.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonReader.java
index 73bed2ac46..ea55c72dc3 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonReader.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonReader.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.sql.engine.externalize;
+import static org.apache.ignite.lang.ErrorGroups.Sql.REL_DESERIALIZATION_ERR;
+
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -50,7 +52,7 @@ import org.apache.calcite.util.Util;
import org.apache.ignite.internal.sql.engine.schema.IgniteTable;
import org.apache.ignite.internal.sql.engine.schema.SqlSchemaManager;
import org.apache.ignite.internal.sql.engine.util.Commons;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.SqlException;
/**
* RelJsonReader.
@@ -103,7 +105,7 @@ public class RelJsonReader {
readRels(rels);
return lastRel;
} catch (IOException e) {
- throw new IgniteException(e);
+ throw new SqlException(REL_DESERIALIZATION_ERR, e);
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonWriter.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonWriter.java
index 6db6fd664d..9542e93820 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonWriter.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJsonWriter.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.sql.engine.externalize;
+import static org.apache.ignite.lang.ErrorGroups.Sql.REL_SERIALIZATION_ERR;
+
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
@@ -30,7 +32,7 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.RelWriter;
import org.apache.calcite.sql.SqlExplainLevel;
import org.apache.calcite.util.Pair;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.SqlException;
/**
* Callback for a relational expression to dump itself as JSON.
@@ -127,7 +129,7 @@ public class RelJsonWriter implements RelWriter {
return writer.toString();
} catch (IOException e) {
- throw new IgniteException(e);
+ throw new SqlException(REL_SERIALIZATION_ERR, e);
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/MessageServiceImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/MessageServiceImpl.java
index 6617a66f90..8964b04453 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/MessageServiceImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/message/MessageServiceImpl.java
@@ -18,6 +18,8 @@
package org.apache.ignite.internal.sql.engine.message;
import static org.apache.ignite.internal.sql.engine.message.SqlQueryMessageGroup.GROUP_TYPE;
+import static org.apache.ignite.lang.ErrorGroups.Sql.MESSAGE_SEND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.NODE_LEFT_ERR;
import java.util.HashMap;
import java.util.Map;
@@ -92,7 +94,8 @@ public class MessageServiceImpl implements MessageService {
ClusterNode node = topSrvc.allMembers().stream()
.filter(cn -> nodeId.equals(cn.id()))
.findFirst()
- .orElseThrow(() -> new IgniteInternalException("Failed to send message to node (has node left grid?): " + nodeId));
+ .orElseThrow(() -> new IgniteInternalException(
+ NODE_LEFT_ERR, "Failed to send message to node (has node left grid?): " + nodeId));
try {
messagingSrvc.send(node, msg).join();
@@ -101,7 +104,7 @@ public class MessageServiceImpl implements MessageService {
throw (IgniteInternalCheckedException) ex;
}
- throw new IgniteInternalCheckedException(ex);
+ throw new IgniteInternalCheckedException(MESSAGE_SEND_ERR, ex);
}
}
} finally {
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgnitePlanner.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgnitePlanner.java
index d54ee43f90..a90a33ac21 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgnitePlanner.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/IgnitePlanner.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.sql.engine.prepare;
+import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_INVALID_ERR;
+
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringWriter;
@@ -233,7 +235,7 @@ public class IgnitePlanner implements Planner, RelOptTable.ViewExpander {
sqlNode = parser.parseQuery();
} catch (SqlParseException e) {
// throw new IgniteSQLException("parse failed", IgniteQueryErrorCode.PARSING, e);
- throw new IgniteException("parse failed", e);
+ throw new IgniteException(QUERY_INVALID_ERR, "parse failed", e);
}
CalciteCatalogReader catalogReader = this.catalogReader.withSchemaPath(schemaPath);
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java
index e438344cc2..70a956d561 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImpl.java
@@ -18,6 +18,8 @@
package org.apache.ignite.internal.sql.engine.prepare;
import static org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize;
+import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_VALIDATION_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.USUPPORTED_SQL_OPERATION_KIND_ERR;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.ArrayList;
@@ -169,12 +171,12 @@ public class PrepareServiceImpl implements PrepareService, SchemaUpdateListener
return prepareExplain(sqlNode, planningContext);
default:
- throw new IgniteInternalException("Unsupported operation ["
+ throw new IgniteInternalException(USUPPORTED_SQL_OPERATION_KIND_ERR, "Unsupported operation ["
+ "sqlNodeKind=" + sqlNode.getKind() + "; "
+ "querySql=\"" + planningContext.query() + "\"]");
}
} catch (CalciteContextException e) {
- throw new IgniteInternalException("Failed to validate query. " + e.getMessage(), e);
+ throw new IgniteInternalException(QUERY_VALIDATION_ERR, "Failed to validate query. " + e.getMessage(), e);
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java
index e68b4d4158..40cb3a31db 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.sql.engine.prepare;
import static org.apache.ignite.internal.util.CollectionUtils.first;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_MAPPING_ERR;
import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap;
import java.util.ArrayList;
@@ -30,7 +31,7 @@ import org.apache.ignite.internal.sql.engine.metadata.MappingService;
import org.apache.ignite.internal.sql.engine.rel.IgniteReceiver;
import org.apache.ignite.internal.sql.engine.rel.IgniteSender;
import org.apache.ignite.internal.sql.engine.util.Commons;
-import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.SqlException;
import org.jetbrains.annotations.NotNull;
/**
@@ -79,7 +80,7 @@ public class QueryTemplate {
}
}
- throw new IgniteException("Failed to map query.", ex);
+ throw new SqlException(QUERY_MAPPING_ERR, "Failed to map query.", ex);
}
@NotNull
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
index ac44905a00..0fbffcd5c8 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
@@ -25,7 +25,10 @@ import static org.apache.ignite.lang.ErrorGroups.Sql.PRIMARY_KEYS_MULTIPLE_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.PRIMARY_KEY_MISSING_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_INVALID_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.SCHEMA_NOT_FOUND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.SQL_TO_REL_CONVERSION_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.STORAGE_ENGINE_NOT_VALID_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.TABLE_OPTION_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.UNSUPPORTED_DDL_OPERATION_ERR;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -169,7 +172,7 @@ public class DdlSqlToCommandConverter {
return convertDropIndex((IgniteSqlDropIndex) ddlNode, ctx);
}
- throw new IgniteException("Unsupported operation ["
+ throw new SqlException(UNSUPPORTED_DDL_OPERATION_ERR, "Unsupported operation ["
+ "sqlNodeKind=" + ddlNode.getKind() + "; "
+ "querySql=\"" + ctx.query() + "\"]");
}
@@ -201,7 +204,8 @@ public class DdlSqlToCommandConverter {
} else if (dataStorageOptionInfos.get(createTblCmd.dataStorage()).containsKey(optionKey)) {
processTableOption(dataStorageOptionInfos.get(createTblCmd.dataStorage()).get(optionKey), option, ctx, createTblCmd);
} else {
- throw new IgniteException(String.format("Unexpected table option [option=%s, query=%s]", optionKey, ctx.query()));
+ throw new IgniteException(
+ TABLE_OPTION_ERR, String.format("Unexpected table option [option=%s, query=%s]", optionKey, ctx.query()));
}
}
}
@@ -559,19 +563,19 @@ public class DdlSqlToCommandConverter {
try {
optionValue = ((SqlLiteral) option.value()).getValueAs(tableOptionInfo.type);
} catch (AssertionError | ClassCastException e) {
- throw new IgniteException(String.format(
+ throw new IgniteException(TABLE_OPTION_ERR, String.format(
"Unsuspected table option type [option=%s, expectedType=%s, query=%s]",
option.key().getSimple(),
tableOptionInfo.type.getSimpleName(),
- context.query()
- ));
+ context.query())
+ );
}
if (tableOptionInfo.validator != null) {
try {
tableOptionInfo.validator.accept(optionValue);
} catch (Throwable e) {
- throw new IgniteException(String.format(
+ throw new IgniteException(TABLE_OPTION_ERR, String.format(
"Table option validation failed [option=%s, err=%s, query=%s]",
option.key().getSimple(),
e.getMessage(),
@@ -585,7 +589,7 @@ public class DdlSqlToCommandConverter {
private void checkPositiveNumber(int num) {
if (num < 0) {
- throw new IgniteException("Must be positive:" + num);
+ throw new IgniteException(TABLE_OPTION_ERR, "Must be positive:" + num);
}
}
@@ -654,7 +658,7 @@ public class DdlSqlToCommandConverter {
}
} catch (Throwable th) {
// catch throwable here because literal throws an AssertionError when unable to cast value to a given class
- throw new IgniteException("Unable co convert literal", th);
+ throw new SqlException(SQL_TO_REL_CONVERSION_ERR, "Unable co convert literal", th);
}
}
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
index 398b545685..ff3822adf7 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
@@ -22,6 +22,9 @@ import static java.util.concurrent.CompletableFuture.failedFuture;
import static org.apache.ignite.internal.schema.SchemaUtils.extractSchema;
import static org.apache.ignite.internal.util.IgniteUtils.inBusyLock;
import static org.apache.ignite.lang.ErrorGroups.Common.NODE_STOPPING_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.SCHEMA_EVALUATION_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.TABLE_NOT_FOUND_ERR;
+import static org.apache.ignite.lang.ErrorGroups.Sql.TABLE_VER_NOT_FOUND_ERR;
import java.util.Comparator;
import java.util.HashMap;
@@ -110,7 +113,8 @@ public class SqlSchemaManagerImpl implements SqlSchemaManager {
if (throwable != null) {
calciteSchemaVv.completeExceptionally(
token,
- new IgniteInternalException("Couldn't evaluate sql schemas for causality token: " + token, throwable)
+ new IgniteInternalException(
+ SCHEMA_EVALUATION_ERR, "Couldn't evaluate sql schemas for causality token: " + token, throwable)
);
return;
@@ -153,12 +157,12 @@ public class SqlSchemaManagerImpl implements SqlSchemaManager {
}
if (table == null) {
- throw new IgniteInternalException(
+ throw new IgniteInternalException(TABLE_NOT_FOUND_ERR,
IgniteStringFormatter.format("Table not found [tableId={}]", id));
}
if (table.version() < ver) {
- throw new IgniteInternalException(
+ throw new IgniteInternalException(TABLE_VER_NOT_FOUND_ERR,
IgniteStringFormatter.format("Table version not found [tableId={}, requiredVer={}, latestKnownVer={}]",
id, ver, table.version()));
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
index 183066f073..869e046e05 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
@@ -21,6 +21,7 @@ import static org.apache.ignite.internal.sql.engine.util.BaseQueryContext.CLUSTE
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
import static org.apache.ignite.internal.util.ExceptionUtils.withCauseAndCode;
import static org.apache.ignite.lang.ErrorGroup.extractCauseMessage;
+import static org.apache.ignite.lang.ErrorGroups.Sql.EXPRESSION_COMPILATION_ERR;
import static org.apache.ignite.lang.ErrorGroups.Sql.QUERY_INVALID_ERR;
import it.unimi.dsi.fastutil.ints.IntArrayList;
@@ -108,7 +109,6 @@ import org.apache.ignite.internal.sql.engine.trait.RewindabilityTraitDef;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
import org.apache.ignite.internal.sql.engine.type.IgniteTypeSystem;
import org.apache.ignite.internal.util.ArrayUtils;
-import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.IgniteSystemProperties;
import org.apache.ignite.sql.ResultSetMetadata;
import org.apache.ignite.sql.SqlException;
@@ -499,7 +499,7 @@ public final class Commons {
return (T) cbe.createInstance(new StringReader(body));
} catch (Exception e) {
- throw new IgniteException(e);
+ throw new SqlException(EXPRESSION_COMPILATION_ERR, e);
}
}
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 3a70143729..114338f3d2 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
@@ -21,6 +21,7 @@ import static org.apache.ignite.internal.sql.engine.util.BaseQueryContext.CLUSTE
import static org.apache.ignite.internal.sql.engine.util.Commons.FRAMEWORK_CONFIG;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
+import static org.apache.ignite.lang.ErrorGroups.Sql.OPERATION_INTERRUPTED_ERR;
import static org.apache.ignite.lang.IgniteStringFormatter.format;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
@@ -217,7 +218,7 @@ public class ExecutionServiceImplTest {
.build()
);
} catch (IgniteInternalCheckedException e) {
- throw new IgniteInternalException(e);
+ throw new IgniteInternalException(OPERATION_INTERRUPTED_ERR, e);
}
} else {
original.onMessage(nodeId, msg);
@@ -529,7 +530,7 @@ public class ExecutionServiceImplTest {
try {
task.run();
} catch (Throwable ex) {
- throw new IgniteInternalException(ex);
+ throw new IgniteInternalException(OPERATION_INTERRUPTED_ERR, ex);
}
}
}