[ 
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)

Reply via email to