You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Yury Gerzhedovich (Jira)" <ji...@apache.org> on 2022/06/03 07:42:00 UTC

[jira] [Updated] (IGNITE-16578) Sql. Implement check of constrains on validation phase.

     [ https://issues.apache.org/jira/browse/IGNITE-16578?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Yury Gerzhedovich updated IGNITE-16578:
---------------------------------------
    Fix Version/s:     (was: 3.0.0-alpha5)

> Sql. Implement check of constrains on validation phase.
> -------------------------------------------------------
>
>                 Key: IGNITE-16578
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16578
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Evgeny Stanilovsky
>            Assignee: Evgeny Stanilovsky
>            Priority: Major
>              Labels: ignite-3
>
> Partial PK update possibilities:
> {noformat}
> CREATE TABLE test1 (k1 int, k2 int, a int, b int, CONSTRAINT PK PRIMARY KEY (k1, k2));
> INSERT INTO test1 (k2, b) VALUES (1, 1); <-- need to be rejected
> CREATE TABLE test2 (k1 int DEFAULT 0, k2 int, a int, b int, CONSTRAINT PK PRIMARY KEY (k1, k2));
> INSERT INTO test1 (k2, b) VALUES (1, 1);  <-- it`s all ok there.
> {noformat}
> At first case now we obtain below trace, seems it helpful to check constraints on validation phase before RowAssembler was called.
> {noformat}
> class org.apache.ignite.lang.IgniteInternalException: Unexpected exception
> 	at org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:300)
> 	at org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:75)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> 	at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: class org.apache.ignite.internal.schema.SchemaMismatchException: Failed to set column (null was passed, but column is not nullable): Column [schemaIndex=0, columnOrder=0, name=K1, type=NativeType [name=INT32, sizeInBytes=4, fixed=true], nullable=false]
> 	at org.apache.ignite.internal.schema.row.RowAssembler.appendNull(RowAssembler.java:342)
> 	at org.apache.ignite.internal.schema.row.RowAssembler.writeValue(RowAssembler.java:166)
> 	at org.apache.ignite.internal.sql.engine.schema.IgniteTableImpl.insertTuple(IgniteTableImpl.java:310)
> 	at org.apache.ignite.internal.sql.engine.schema.IgniteTableImpl.toModifyRow(IgniteTableImpl.java:273)
> 	at org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.push(ModifyNode.java:122)
> 	at org.apache.ignite.internal.sql.engine.exec.rel.ProjectNode.push(ProjectNode.java:71)
> 	at org.apache.ignite.internal.sql.engine.exec.rel.ScanNode.push(ScanNode.java:113)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)