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 <xxt...@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); } } }