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

Pavel Pereslegin resolved IGNITE-16095.
---------------------------------------
    Resolution: Duplicate

> Sql. Null values insertion into columns with NOT NULL constraints throws 
> IgniteException.  
> -------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-16095
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16095
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Evgeny Stanilovsky
>            Priority: Major
>              Labels: ignite-3
>
> CREATE TABLE tbl(c1 int primary key, c2 int NOT NULL);
> INSERT INTO tbl(c1, c2) VALUES (2, NULL);
> throws:
> {noformat}
> Caused by: class org.apache.ignite.lang.IgniteException: Failed to set column 
> (null was passed, but column is not nullable): [col=Column [schemaIndex=1, 
> columnOrder=1, name=C2, type=NativeType [name=INT32, sizeInBytes=4, 
> fixed=true], nullable=false]]
>       at 
> org.apache.ignite.internal.table.AbstractTableView.convertException(AbstractTableView.java:100)
>       at 
> org.apache.ignite.internal.table.RecordBinaryViewImpl.marshal(RecordBinaryViewImpl.java:358)
>       at 
> org.apache.ignite.internal.table.RecordBinaryViewImpl.mapToBinary(RecordBinaryViewImpl.java:401)
>       at 
> org.apache.ignite.internal.table.RecordBinaryViewImpl.insertAllAsync(RecordBinaryViewImpl.java:177)
>       at 
> org.apache.ignite.internal.table.RecordBinaryViewImpl.insertAll(RecordBinaryViewImpl.java:169)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.rel.ModifyNode.flushTuples(ModifyNode.java:198)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.rel.ModifyNode.tryEnd(ModifyNode.java:169)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.rel.ModifyNode.end(ModifyNode.java:142)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.rel.ProjectNode.end(ProjectNode.java:81)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.push(ScanNode.java:132)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:305)
>       at 
> org.apache.ignite.internal.processors.query.calcite.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:78)
>       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.marshaller.TupleMarshallerException: Failed 
> to set column (null was passed, but column is not nullable): [col=Column 
> [schemaIndex=1, columnOrder=1, name=C2, type=NativeType [name=INT32, 
> sizeInBytes=4, fixed=true], nullable=false]]
>       at 
> org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl.marshal(TupleMarshallerImpl.java:77)
>       at 
> org.apache.ignite.internal.table.RecordBinaryViewImpl.marshal(RecordBinaryViewImpl.java:355)
>       ... 13 more
> Caused by: java.lang.IllegalArgumentException: Failed to set column (null was 
> passed, but column is not nullable): [col=Column [schemaIndex=1, 
> columnOrder=1, name=C2, type=NativeType [name=INT32, sizeInBytes=4, 
> fixed=true], nullable=false]]
>       at org.apache.ignite.internal.schema.Column.validate(Column.java:229)
>       at 
> org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl.toInternalTuple(TupleMarshallerImpl.java:224)
>       at 
> org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl.marshal(TupleMarshallerImpl.java:67)
>       ... 14 more
> {noformat}
> more suitable exception need to be thrown here.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to