File: test_drop_not_null.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (104 lines) | stat: -rw-r--r-- 1,845 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# name: test/sql/alter/alter_col/test_drop_not_null.test
# description: Test ALTER TABLE ALTER COLUMN column_name DROP NOT NULL
# group: [alter_col]

# Happy path

statement ok
PRAGMA enable_verification

statement ok
CREATE TABLE test(i INTEGER, j INTEGER NOT NULL)

statement ok
INSERT INTO test VALUES (1, 1), (2, 2)

statement error
INSERT INTO test VALUES (3, NULL)
----

query II
SELECT * FROM test
----
1	1
2	2

statement ok
ALTER TABLE test ALTER COLUMN j DROP NOT NULL

statement ok 
INSERT INTO test VALUES (3, NULL)

query II
SELECT * FROM test
----
1	1
2	2
3	NULL

# Negative path

statement ok
CREATE TABLE test2(i INTEGER, j INTEGER)

statement ok
INSERT INTO test2 VALUES (1, 1), (2, 2)

statement ok
ALTER TABLE test2 ALTER COLUMN j DROP NOT NULL

statement ok 
INSERT INTO test VALUES (3, NULL)

# Drop not null with generated column presented
statement ok
DROP TABLE IF EXISTS test

statement ok
CREATE TABLE test(i AS (1), j INTEGER NOT NULL)

statement ok
INSERT INTO test VALUES (1), (2)

statement error
INSERT INTO test VALUES (NULL)
----

query II
SELECT * FROM test
----
1	1
1	2

statement ok
ALTER TABLE test ALTER COLUMN i DROP NOT NULL

statement ok
ALTER TABLE test ALTER COLUMN j DROP NOT NULL

statement ok
INSERT INTO test VALUES (NULL)

query II
SELECT * FROM test
----
1	1
1	2
1	NULL

# test that DROP NOT NULL preserves temporary flag
statement ok
CREATE TEMPORARY TABLE temp_drop_not_null_test(x INTEGER NOT NULL)

query TTI
SELECT table_name, database_name, temporary FROM duckdb_tables() WHERE table_name='temp_drop_not_null_test'
----
temp_drop_not_null_test	temp	true

statement ok
ALTER TABLE temp_drop_not_null_test ALTER COLUMN x DROP NOT NULL

query TTI
SELECT table_name, database_name, temporary FROM duckdb_tables() WHERE table_name='temp_drop_not_null_test'
----
temp_drop_not_null_test	temp	true