[
https://issues.apache.org/jira/browse/IGNITE-22098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Iurii Gerzhedovich updated IGNITE-22098:
----------------------------------------
Description:
In the case provided incorrect charset name for type will be thrown internal
error which NPE causes.
Let's provide user-friendly errors for such cases.
Use incorrect charset name:
{code:java}
CREATE TABLE test (c1 CHAR CHARACTER SET UTF_8);{code}
Result:
{code:java}
Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
at
org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:765)
at
org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:699)
at
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:525)
at
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCauseInternal(ExceptionUtils.java:634)
at
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:476)
at
org.apache.ignite.internal.sql.api.IgniteSqlImpl.execute(IgniteSqlImpl.java:206)
at
org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.lambda$execute$1(PublicApiThreadingIgniteSql.java:65)
at
org.apache.ignite.internal.thread.PublicApiThreading.executeWithRole(PublicApiThreading.java:144)
at
org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:102)
at
org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.execute(PublicApiThreadingIgniteSql.java:65)
at
org.apache.ignite.internal.sql.sqllogic.ScriptContext.executeQuery(ScriptContext.java:85)
at
org.apache.ignite.internal.sql.sqllogic.Statement.execute(Statement.java:110)
... 5 more
Caused by: java.util.concurrent.CompletionException:
org.apache.ignite.sql.SqlException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
org.apache.ignite.internal.sql.api.IgniteSqlImpl.lambda$executeAsyncInternal$5(IgniteSqlImpl.java:379)
at
java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
at
java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
at
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
at
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
... 3 more
Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:61)
... 9 more
Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:118)
at
org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:51)
... 9 more
Caused by: java.lang.NullPointerException: UTF_8
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at
org.apache.calcite.sql.SqlBasicTypeNameSpec.deriveType(SqlBasicTypeNameSpec.java:220)
at
org.apache.calcite.sql.SqlDataTypeSpec.deriveType(SqlDataTypeSpec.java:234)
at
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.convert(IgnitePlanner.java:229)
at
org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convertCreateTable(DdlSqlToCommandConverter.java:334)
at
org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convert(DdlSqlToCommandConverter.java:182)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareDdl(PrepareServiceImpl.java:245)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync0(PrepareServiceImpl.java:230)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync(PrepareServiceImpl.java:210)
at
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$executeParsedStatement$16(SqlQueryProcessor.java:648)
at
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.executeParsedStatement(SqlQueryProcessor.java:636)
at
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$querySingle$10(SqlQueryProcessor.java:567)
at
java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
... 6 more {code}
was:
In the case provided incorrect charset name for type will be thrown internal
error which NPE causes.
Let's provide user-friendly errors for such cases.
Use incorrect charset name:
{code:java}
CREATE TABLE test (c1 CHAR CHARACTER SET UTF_8);{code}
Result:
{code:java}
Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
at
org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:765)
at
org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:699)
at
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:525)
at
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCauseInternal(ExceptionUtils.java:634)
at
org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:476)
at
org.apache.ignite.internal.sql.api.IgniteSqlImpl.execute(IgniteSqlImpl.java:206)
at
org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.lambda$execute$1(PublicApiThreadingIgniteSql.java:65)
at
org.apache.ignite.internal.thread.PublicApiThreading.executeWithRole(PublicApiThreading.java:144)
at
org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:102)
at
org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.execute(PublicApiThreadingIgniteSql.java:65)
at
org.apache.ignite.internal.sql.sqllogic.ScriptContext.executeQuery(ScriptContext.java:85)
at
org.apache.ignite.internal.sql.sqllogic.Statement.execute(Statement.java:110)
... 5 more
Caused by: java.util.concurrent.CompletionException:
org.apache.ignite.sql.SqlException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
org.apache.ignite.internal.sql.api.IgniteSqlImpl.lambda$executeAsyncInternal$5(IgniteSqlImpl.java:379)
at
java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
at
java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
at
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
at
org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
... 3 more
Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:61)
... 9 more
Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535
TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:118)
at
org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:51)
... 9 more
Caused by: java.lang.NullPointerException: UTF_8
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at
org.apache.calcite.sql.SqlBasicTypeNameSpec.deriveType(SqlBasicTypeNameSpec.java:220)
at
org.apache.calcite.sql.SqlDataTypeSpec.deriveType(SqlDataTypeSpec.java:234)
at
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.convert(IgnitePlanner.java:229)
at
org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convertCreateTable(DdlSqlToCommandConverter.java:334)
at
org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convert(DdlSqlToCommandConverter.java:182)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareDdl(PrepareServiceImpl.java:245)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync0(PrepareServiceImpl.java:230)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync(PrepareServiceImpl.java:210)
at
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$executeParsedStatement$16(SqlQueryProcessor.java:648)
at
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
at
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
at
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.executeParsedStatement(SqlQueryProcessor.java:636)
at
org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$querySingle$10(SqlQueryProcessor.java:567)
at
java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
... 6 more {code}
> Sql. Internal error (NPE) during provide incorrect charset
> ----------------------------------------------------------
>
> Key: IGNITE-22098
> URL: https://issues.apache.org/jira/browse/IGNITE-22098
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Reporter: Iurii Gerzhedovich
> Priority: Major
> Labels: ignite-3
>
> In the case provided incorrect charset name for type will be thrown internal
> error which NPE causes.
> Let's provide user-friendly errors for such cases.
> Use incorrect charset name:
> {code:java}
> CREATE TABLE test (c1 CHAR CHARACTER SET UTF_8);{code}
> Result:
> {code:java}
> Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
> at
> java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
> at
> org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:765)
> at
> org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:699)
> at
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:525)
> at
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCauseInternal(ExceptionUtils.java:634)
> at
> org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:476)
> at
> org.apache.ignite.internal.sql.api.IgniteSqlImpl.execute(IgniteSqlImpl.java:206)
> at
> org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.lambda$execute$1(PublicApiThreadingIgniteSql.java:65)
> at
> org.apache.ignite.internal.thread.PublicApiThreading.executeWithRole(PublicApiThreading.java:144)
> at
> org.apache.ignite.internal.thread.PublicApiThreading.execUserSyncOperation(PublicApiThreading.java:102)
> at
> org.apache.ignite.internal.sql.api.PublicApiThreadingIgniteSql.execute(PublicApiThreadingIgniteSql.java:65)
> at
> org.apache.ignite.internal.sql.sqllogic.ScriptContext.executeQuery(ScriptContext.java:85)
> at
> org.apache.ignite.internal.sql.sqllogic.Statement.execute(Statement.java:110)
> ... 5 more
> Caused by: java.util.concurrent.CompletionException:
> org.apache.ignite.sql.SqlException: IGN-CMN-65535
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
> at
> org.apache.ignite.internal.sql.api.IgniteSqlImpl.lambda$executeAsyncInternal$5(IgniteSqlImpl.java:379)
> at
> java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
> at
> java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
> at
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
> at
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
> at
> org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83)
> ... 3 more
> Caused by: org.apache.ignite.sql.SqlException: IGN-CMN-65535
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
> at
> org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:61)
> ... 9 more
> Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535
> TraceId:382210fe-335d-4df2-b8fc-149c13b7f5e5 UTF_8
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:118)
> at
> org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:51)
> ... 9 more
> Caused by: java.lang.NullPointerException: UTF_8
> at java.base/java.util.Objects.requireNonNull(Objects.java:233)
> at
> org.apache.calcite.sql.SqlBasicTypeNameSpec.deriveType(SqlBasicTypeNameSpec.java:220)
> at
> org.apache.calcite.sql.SqlDataTypeSpec.deriveType(SqlDataTypeSpec.java:234)
> at
> org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.convert(IgnitePlanner.java:229)
> at
> org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convertCreateTable(DdlSqlToCommandConverter.java:334)
> at
> org.apache.ignite.internal.sql.engine.prepare.ddl.DdlSqlToCommandConverter.convert(DdlSqlToCommandConverter.java:182)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareDdl(PrepareServiceImpl.java:245)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync0(PrepareServiceImpl.java:230)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync(PrepareServiceImpl.java:210)
> at
> org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$executeParsedStatement$16(SqlQueryProcessor.java:648)
> at
> java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
> at
> java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
> at
> org.apache.ignite.internal.sql.engine.SqlQueryProcessor.executeParsedStatement(SqlQueryProcessor.java:636)
> at
> org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$querySingle$10(SqlQueryProcessor.java:567)
> at
> java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
> ... 6 more {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)