should be it
This commit is contained in:
196
external/duckdb/test/sql/update/test_null_update.test
vendored
Normal file
196
external/duckdb/test/sql/update/test_null_update.test
vendored
Normal file
@@ -0,0 +1,196 @@
|
||||
# name: test/sql/update/test_null_update.test
|
||||
# description: Test standard update behavior with NULLs
|
||||
# group: [update]
|
||||
|
||||
statement ok
|
||||
SET default_null_order='nulls_first';
|
||||
|
||||
# create a table
|
||||
statement ok con1
|
||||
CREATE TABLE test (a INTEGER);
|
||||
|
||||
statement ok con1
|
||||
INSERT INTO test VALUES (1), (2), (3), (NULL)
|
||||
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
# test updating from a non-null value to a null value
|
||||
statement ok con1
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok con1
|
||||
UPDATE test SET a=NULL WHERE a=2
|
||||
|
||||
# not seen yet by con2, only by con1
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
1
|
||||
2
|
||||
3
|
||||
|
||||
# commit
|
||||
statement ok con1
|
||||
COMMIT
|
||||
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
# now test a rollback
|
||||
statement ok con1
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok con1
|
||||
UPDATE test SET a=NULL WHERE a=3
|
||||
|
||||
# not seen yet by con2, only by con1
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
statement ok con1
|
||||
ROLLBACK
|
||||
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
# test updating from a null value to a non-null value
|
||||
statement ok con1
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok con1
|
||||
UPDATE test SET a=10 WHERE a IS NULL
|
||||
|
||||
# not seen yet by con2, only by con1
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
1
|
||||
3
|
||||
10
|
||||
10
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
# now rollback
|
||||
statement ok con1
|
||||
ROLLBACK
|
||||
|
||||
# values are back to original values
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
# perform the same update, but this time commit
|
||||
statement ok con1
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok con1
|
||||
UPDATE test SET a=10 WHERE a IS NULL
|
||||
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
1
|
||||
3
|
||||
10
|
||||
10
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
NULL
|
||||
NULL
|
||||
1
|
||||
3
|
||||
|
||||
statement ok con1
|
||||
COMMIT
|
||||
|
||||
query I con1
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
1
|
||||
3
|
||||
10
|
||||
10
|
||||
|
||||
query I con2
|
||||
SELECT * FROM test ORDER BY a
|
||||
----
|
||||
1
|
||||
3
|
||||
10
|
||||
10
|
||||
|
||||
Reference in New Issue
Block a user