[
https://issues.apache.org/jira/browse/IGNITE-22451?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov reassigned IGNITE-22451:
-----------------------------------------
Assignee: Maksim Zhuravkov
> Sql. An insert may cause specific later updates to fail. Affects only
> char/varchar
> ----------------------------------------------------------------------------------
>
> Key: IGNITE-22451
> URL: https://issues.apache.org/jira/browse/IGNITE-22451
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Maksim Zhuravkov
> Assignee: Maksim Zhuravkov
> Priority: Major
> Labels: ignite-3
>
> {noformat}
> statement ok
> CREATE TABLE tmp (c5 VARCHAR(5), c10 VARCHAR(10));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(5));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(3));
> statement ok
> UPDATE tmp SET c5=c5::CHAR(6)
> {noformat}
> Update statement fails with:
> {noformat}
> java.lang.IllegalStateException: Row has not been fully built. Index: 2,
> fields: 3
> at
> org.apache.ignite.internal.sql.engine.exec.SqlRowHandler$RowBuilderImpl.checkState(SqlRowHandler.java:474)
> ~[main/:?]
> at
> org.apache.ignite.internal.sql.engine.exec.SqlRowHandler$RowBuilderImpl.build(SqlRowHandler.java:457)
> ~[main/:?]
> at
> org.apache.ignite.internal.sql.engine.exec.SqlRowHandler$RowBuilderImpl.build(SqlRowHandler.java:425)
> ~[main/:?]
> at
> org.apache.ignite.internal.sql.engine.util.TypeUtils.validateCharactersOverflowAndTrimIfPossible(TypeUtils.java:739)
> ~[main/:?]
> at
> org.apache.ignite.internal.sql.engine.exec.UpdatableTableImpl.validateCharactersOverflowAndTrimIfPossible(UpdatableTableImpl.java:387)
> ~[main/:?]
> at
> org.apache.ignite.internal.sql.engine.exec.UpdatableTableImpl.upsertAll(UpdatableTableImpl.java:122)
> ~[main/:?]
> {noformat}
> The following sequences also produces the same error
> {noformat}
> statement ok
> CREATE TABLE tmp (c5 VARCHAR(5), c10 VARCHAR(10));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(5));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(10));
> statement ok
> UPDATE tmp SET c5=c5::CHAR(6)
> {noformat}
> The error won't happen, when there is no second update
> {noformat}
> statement ok
> CREATE TABLE tmp (c5 VARCHAR(5), c10 VARCHAR(10));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(5));
> statement ok
> UPDATE tmp SET c5=c5::CHAR(6)
> {noformat}
> OR c5::CHAR(6) is replaced with CHAR ( n ) where n is less or equal than 5
> {noformat}
> statement ok
> CREATE TABLE tmp (c5 VARCHAR(5), c10 VARCHAR(10));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(5));
> statement ok
> INSERT INTO tmp (c5) VALUES('a'::CHAR(3));
> statement ok
> UPDATE tmp SET c5=c5::CHAR(4)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)