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

Maksim Zhuravkov updated IGNITE-22015:
--------------------------------------
    Description: 
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 am 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}

  was:
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 am UPDATE statement inside a MERGE statement.


> Sql. NOT NULL constraint is ignored by UPDATE statement
> -------------------------------------------------------
>
>                 Key: IGNITE-22015
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22015
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>            Reporter: Maksim Zhuravkov
>            Priority: Major
>              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 am 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}



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

Reply via email to