[
https://issues.apache.org/jira/browse/IGNITE-22015?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Iurii Gerzhedovich updated IGNITE-22015:
----------------------------------------
Priority: Critical (was: Major)
> Sql. NOT NULL constraint is ignored by UPDATE, MERGE, INSERT INTO ... FROM
> statements
> -------------------------------------------------------------------------------------
>
> Key: IGNITE-22015
> URL: https://issues.apache.org/jira/browse/IGNITE-22015
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Maksim Zhuravkov
> Priority: Critical
> Labels: ignite-3
>
> NOT NULL constraint is ignored by UPDATE statement and it is possible to set
> null value to a not null column.
> {code:java}
> @Test
> public void test() {
> sql("CREATE TABLE t (id INTEGER PRIMARY KEY, int_col INTEGER NOT NULL)");
> try {
> sql("INSERT INTO t VALUES(1, NULL)");
> fail();
> } catch (Exception e) {
> System.err.println(e.getMessage());// Column 'INT_COL' does not allow
> NULLs
> }
> sql("INSERT INTO t VALUES(1, 42)");
> sql("UPDATE t SET int_col = NULL");
>
> for (var row : sql("SELECT id, int_col FROM t")) {
> System.err.println(row); // [1, null]
> }
> }
> {code}
> The same holds for an UPDATE statement inside a MERGE statement:
> {code:java}
> @Test
> public void test2() {
> sql("CREATE TABLE t1 (id INTEGER PRIMARY KEY, int_col INTEGER NOT
> NULL)");
> sql("CREATE TABLE t2 (id INTEGER PRIMARY KEY, int_col INTEGER NOT
> NULL)");
>
> sql("INSERT INTO t1 VALUES (1, 42)");
> sql("INSERT INTO t2 VALUES (1, 42)");
>
> sql("MERGE INTO t2 dst USING t1 src ON dst.id = src.id WHEN MATCHED
> THEN UPDATE SET int_col = NULL");
> for (var row : sql("SELECT id, int_col FROM t2")) {
> System.err.println(row); // [1, null]
> }
> }
> {code}
> INSERT .. FROM SELECT
> {code:java}
> @Test
> public void test3() {
> sql("CREATE TABLE t1 (id INTEGER PRIMARY KEY, date_col DATE NOT
> NULL)");
> sql("INSERT INTO t1 SELECT 1, NULL");
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)