[jira] [Updated] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
[ https://issues.apache.org/jira/browse/IGNITE-19341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Evgeny Stanilovsky updated IGNITE-19341: Ignite Flags: (was: Docs Required,Release Notes Required) > SQL: SUBSTRING function does not support NULL values (try 2) > > > Key: IGNITE-19341 > URL: https://issues.apache.org/jira/browse/IGNITE-19341 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Assignee: Evgeny Stanilovsky >Priority: Major > Labels: calcite2-required, ignite-3, sql > > ANSI99 SQL specification ("6.18 ") says the following: > {code:java} > 3) If is specified, then: > a) Let C be the value of the , ..., and let S > be the value of the . > b) If is specified, then let L be the value of length> ... > c) If either C, S, or L is the null value, then the result of the > is the null value. > {code} > So, we should expect the following behavior: > {code:sql} > SUBSTRING('text' FROM 1 FOR NULL) -> NULL > SUBSTRING('text' FROM NULL FOR 2) -> NULL > SUBSTRING(NULL FROM 1 FOR 2) -> NULL > {code} > Instead, we got errors for these queries: > {code:sql} > sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR > NULL);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR > 2);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > {code} > Only such request works fine: > {code:sql} > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > ╔═╗ > ║ EXPR$0 ║ > ╠═╣ > ║ null║ > ╚═╝ > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
[ https://issues.apache.org/jira/browse/IGNITE-19341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yury Gerzhedovich updated IGNITE-19341: --- Labels: calcite2-required ignite-3 sql (was: ignite-3 sql) > SQL: SUBSTRING function does not support NULL values (try 2) > > > Key: IGNITE-19341 > URL: https://issues.apache.org/jira/browse/IGNITE-19341 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Assignee: Andrey Mashenkov >Priority: Major > Labels: calcite2-required, ignite-3, sql > > ANSI99 SQL specification ("6.18 ") says the following: > {code:java} > 3) If is specified, then: > a) Let C be the value of the , ..., and let S > be the value of the . > b) If is specified, then let L be the value of length> ... > c) If either C, S, or L is the null value, then the result of the > is the null value. > {code} > So, we should expect the following behavior: > {code:sql} > SUBSTRING('text' FROM 1 FOR NULL) -> NULL > SUBSTRING('text' FROM NULL FOR 2) -> NULL > SUBSTRING(NULL FROM 1 FOR 2) -> NULL > {code} > Instead, we got errors for these queries: > {code:sql} > sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR > NULL);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR > 2);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > {code} > Only such request works fine: > {code:sql} > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > ╔═╗ > ║ EXPR$0 ║ > ╠═╣ > ║ null║ > ╚═╝ > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
[ https://issues.apache.org/jira/browse/IGNITE-19341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19341: Fix Version/s: (was: 3.0.0-beta2) > SQL: SUBSTRING function does not support NULL values (try 2) > > > Key: IGNITE-19341 > URL: https://issues.apache.org/jira/browse/IGNITE-19341 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Assignee: Andrey Mashenkov >Priority: Major > Labels: ignite-3, sql > > ANSI99 SQL specification ("6.18 ") says the following: > {code:java} > 3) If is specified, then: > a) Let C be the value of the , ..., and let S > be the value of the . > b) If is specified, then let L be the value of length> ... > c) If either C, S, or L is the null value, then the result of the > is the null value. > {code} > So, we should expect the following behavior: > {code:sql} > SUBSTRING('text' FROM 1 FOR NULL) -> NULL > SUBSTRING('text' FROM NULL FOR 2) -> NULL > SUBSTRING(NULL FROM 1 FOR 2) -> NULL > {code} > Instead, we got errors for these queries: > {code:sql} > sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR > NULL);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR > 2);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > {code} > Only such request works fine: > {code:sql} > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > ╔═╗ > ║ EXPR$0 ║ > ╠═╣ > ║ null║ > ╚═╝ > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
[ https://issues.apache.org/jira/browse/IGNITE-19341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19341: Description: ANSI99 SQL specification ("6.18 ") says the following: {code:java} 3) If is specified, then: a) Let C be the value of the , ..., and let S be the value of the . b) If is specified, then let L be the value of ... c) If either C, S, or L is the null value, then the result of the is the null value. {code} So, we should expect the following behavior: {code:sql} SUBSTRING('text' FROM 1 FOR NULL) -> NULL SUBSTRING('text' FROM NULL FOR 2) -> NULL SUBSTRING(NULL FROM 1 FOR 2) -> NULL {code} Instead, we got errors for these queries: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' {code} Only such request works fine: {code:sql} sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); ╔═╗ ║ EXPR$0 ║ ╠═╣ ║ null║ ╚═╝ {code} was: ANSI99 SQL specification ("6.18 ") says the following: {code:java} 3) If is specified, then: a) Let C be the value of the , ..., and let S be the value of the . b) If is specified, then let L be the value of ... c) If either C, S, or L is the null value, then the result of the is the null value. {code} So, we should expect the following behavior: {code:sql} SUBSTRING('text' FROM 1 FOR NULL) -> NULL SUBSTRING('text' FROM NULL FOR 2) -> NULL SUBSTRING(NULL FROM 1 FOR 2) -> NULL {code} Instead, we got errors for these queries: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); (client freezes, no answer at all) {code} *Important*: the last query causes {{NullPointerException}} within DB: {code:java} 2022-12-30 07:32:46:210 + [WARNING][node1-srv-worker-1][ClientInboundMessageHandler] Error processing client request java.lang.NullPointerException at org.apache.ignite.internal.sql.SqlColumnTypeConverter.columnTypeToClass(SqlColumnTypeConverter.java:42) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.createColumnMetadata(JdbcQueryCursorHandlerImpl.java:162) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.queryMetadataAsync(JdbcQueryCursorHandlerImpl.java:133) at org.apache.ignite.client.handler.requests.jdbc.ClientJdbcQueryMetadataRequest.process(ClientJdbcQueryMetadataRequest.java:47) at