should be it
This commit is contained in:
19
external/duckdb/test/sql/alter/add_col/test_add_col.test
vendored
Normal file
19
external/duckdb/test/sql/alter/add_col/test_add_col.test
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# name: test/sql/alter/add_col/test_add_col.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: standard add column
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
query III
|
||||
SELECT * FROM test
|
||||
----
|
||||
1 1 NULL
|
||||
2 2 NULL
|
||||
|
||||
55
external/duckdb/test/sql/alter/add_col/test_add_col_chain.test
vendored
Normal file
55
external/duckdb/test/sql/alter/add_col/test_add_col_chain.test
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_chain.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: multiple ADD COLUMN in the same transaction
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (3, 3)
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN l INTEGER
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN m INTEGER DEFAULT 3
|
||||
|
||||
query IIIII
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
NULL
|
||||
NULL
|
||||
3
|
||||
2
|
||||
2
|
||||
NULL
|
||||
NULL
|
||||
3
|
||||
3
|
||||
3
|
||||
NULL
|
||||
NULL
|
||||
3
|
||||
|
||||
statement ok
|
||||
ROLLBACK
|
||||
|
||||
query II
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
|
||||
18
external/duckdb/test/sql/alter/add_col/test_add_col_default.test
vendored
Normal file
18
external/duckdb/test/sql/alter/add_col/test_add_col_default.test
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_default.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: ADD COLUMN with a default value.
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN l INTEGER DEFAULT 3
|
||||
|
||||
query III
|
||||
SELECT i, j, l FROM test
|
||||
----
|
||||
1 1 3
|
||||
2 2 3
|
||||
43
external/duckdb/test/sql/alter/add_col/test_add_col_default_seq.test
vendored
Normal file
43
external/duckdb/test/sql/alter/add_col/test_add_col_default_seq.test
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_default_seq.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: ADD COLUMN with sequence as default value
|
||||
# group: [add_col]
|
||||
|
||||
require skip_reload
|
||||
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
CREATE SEQUENCE seq
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN m INTEGER DEFAULT nextval('seq')
|
||||
|
||||
query III
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
2
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN n INTEGER DEFAULT currval('seq')
|
||||
|
||||
query IIII
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
2
|
||||
2
|
||||
2
|
||||
29
external/duckdb/test/sql/alter/add_col/test_add_col_incorrect.test
vendored
Normal file
29
external/duckdb/test/sql/alter/add_col/test_add_col_incorrect.test
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_incorrect.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: Incorrect usage
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement error
|
||||
ALTER TABLE test ADD COLUMN i INTEGER
|
||||
----
|
||||
|
||||
statement ok
|
||||
CREATE VIEW x(x) AS (SELECT 1)
|
||||
|
||||
# Cannot add columns to views
|
||||
statement error
|
||||
ALTER VIEW x ADD COLUMN i INTEGER
|
||||
----
|
||||
Parser Error: Adding columns is only supported for tables
|
||||
|
||||
# Multiple alter per statement not supported yet
|
||||
statement error
|
||||
ALTER TABLE i ADD COLUMN j INT, ADD COLUMN k INT
|
||||
----
|
||||
Parser Error: Only one ALTER command per statement is supported
|
||||
|
||||
42
external/duckdb/test/sql/alter/add_col/test_add_col_index.test
vendored
Normal file
42
external/duckdb/test/sql/alter/add_col/test_add_col_index.test
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_index.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: ADD COLUMN with index
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN k INTEGER DEFAULT 2
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON test(k)
|
||||
|
||||
statement ok
|
||||
COMMIT
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (3, 3, 3)
|
||||
|
||||
query III
|
||||
SELECT * FROM test WHERE k=2
|
||||
----
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
2
|
||||
2
|
||||
|
||||
query III
|
||||
SELECT * FROM test WHERE k=3
|
||||
----
|
||||
3
|
||||
3
|
||||
3
|
||||
|
||||
35
external/duckdb/test/sql/alter/add_col/test_add_col_index_rollback.test
vendored
Normal file
35
external/duckdb/test/sql/alter/add_col/test_add_col_index_rollback.test
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_index_rollback.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: ADD COLUMN rollback with index
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON test(k)
|
||||
|
||||
statement ok
|
||||
ROLLBACK
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (3, 3)
|
||||
|
||||
query II
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
3
|
||||
3
|
||||
|
||||
56
external/duckdb/test/sql/alter/add_col/test_add_col_local_storage.test
vendored
Normal file
56
external/duckdb/test/sql/alter/add_col/test_add_col_local_storage.test
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_local_storage.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: ADD COLUMN with data inside local storage
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (3, 3)
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
query III
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
NULL
|
||||
2
|
||||
2
|
||||
NULL
|
||||
3
|
||||
3
|
||||
NULL
|
||||
|
||||
statement ok
|
||||
ROLLBACK
|
||||
|
||||
query II
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (3, 3)
|
||||
|
||||
query II
|
||||
SELECT * FROM test
|
||||
----
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
3
|
||||
3
|
||||
|
||||
31
external/duckdb/test/sql/alter/add_col/test_add_col_stats.test
vendored
Normal file
31
external/duckdb/test/sql/alter/add_col/test_add_col_stats.test
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_stats.test
|
||||
# description: Test correct stats on adding a new column
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
statement ok
|
||||
CREATE SEQUENCE seq
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN m INTEGER DEFAULT nextval('seq')
|
||||
|
||||
query III
|
||||
SELECT * FROM test
|
||||
----
|
||||
1 1 1
|
||||
2 2 2
|
||||
|
||||
query III
|
||||
SELECT * FROM test WHERE m=2
|
||||
----
|
||||
2 2 2
|
||||
|
||||
query I
|
||||
SELECT stats(m) FROM test LIMIT 1
|
||||
----
|
||||
<REGEX>:.*1.*2.*
|
||||
118
external/duckdb/test/sql/alter/add_col/test_add_col_transactions.test
vendored
Normal file
118
external/duckdb/test/sql/alter/add_col/test_add_col_transactions.test
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_transactions.test
|
||||
# description: Test ALTER TABLE ADD COLUMN with multiple transactions
|
||||
# group: [add_col]
|
||||
|
||||
statement ok con1
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok con1
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
# Only one pending table alter can be active at a time
|
||||
statement ok con1
|
||||
BEGIN TRANSACTION
|
||||
|
||||
# con adds a column to test
|
||||
statement ok con1
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
# con2 cannot add a new column now!
|
||||
statement error con2
|
||||
ALTER TABLE test ADD COLUMN l INTEGER
|
||||
----
|
||||
|
||||
statement ok con1
|
||||
COMMIT
|
||||
|
||||
# after a commit, con2 can add a new column again
|
||||
statement ok con2
|
||||
ALTER TABLE test ADD COLUMN l INTEGER
|
||||
|
||||
statement ok con1
|
||||
DROP TABLE test
|
||||
|
||||
statement ok con1
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok con1
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
# Can only append to newest table
|
||||
statement ok con1
|
||||
BEGIN TRANSACTION
|
||||
|
||||
# con adds a column to test
|
||||
statement ok con1
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
# con2 cannot append now!
|
||||
statement error con2
|
||||
INSERT INTO test (i, j) VALUES (3, 3)
|
||||
----
|
||||
|
||||
# nor delete
|
||||
statement error con2
|
||||
DELETE FROM test WHERE i=1
|
||||
----
|
||||
altered
|
||||
|
||||
query III con1
|
||||
SELECT * FROM test
|
||||
----
|
||||
1 1 NULL
|
||||
2 2 NULL
|
||||
|
||||
query II con2
|
||||
SELECT * FROM test
|
||||
----
|
||||
1 1
|
||||
2 2
|
||||
|
||||
# cannot update an altered table
|
||||
statement error con2
|
||||
UPDATE test SET j=100
|
||||
----
|
||||
|
||||
query III con1
|
||||
SELECT * FROM test
|
||||
----
|
||||
1 1 NULL
|
||||
2 2 NULL
|
||||
|
||||
statement ok con1
|
||||
UPDATE test SET j=100
|
||||
|
||||
statement ok con1
|
||||
COMMIT
|
||||
|
||||
query III con1
|
||||
SELECT * FROM test
|
||||
----
|
||||
1 100 NULL
|
||||
2 100 NULL
|
||||
|
||||
statement ok con1
|
||||
DROP TABLE test
|
||||
|
||||
statement ok con1
|
||||
CREATE TABLE test(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok con1
|
||||
INSERT INTO test VALUES (1, 1), (2, 2)
|
||||
|
||||
# Alter table while other transaction still has pending appends
|
||||
statement ok con2
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok con2
|
||||
INSERT INTO test VALUES (3, 3)
|
||||
|
||||
# now con adds a column
|
||||
statement ok con1
|
||||
ALTER TABLE test ADD COLUMN k INTEGER
|
||||
|
||||
# cannot commit con2! conflict on append
|
||||
statement error con2
|
||||
COMMIT
|
||||
----
|
||||
|
||||
43
external/duckdb/test/sql/alter/add_col/test_add_col_user_type.test
vendored
Normal file
43
external/duckdb/test/sql/alter/add_col/test_add_col_user_type.test
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# name: test/sql/alter/add_col/test_add_col_user_type.test
|
||||
# description: Test ALTER TABLE ADD COLUMN with "CREATE TYPE"-based types
|
||||
# group: [add_col]
|
||||
|
||||
statement ok
|
||||
CREATE SCHEMA test_schema;
|
||||
|
||||
statement ok
|
||||
CREATE TYPE main_int AS int32;
|
||||
|
||||
statement ok
|
||||
CREATE TYPE test_schema.test_int AS int32;
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test_schema.test_t1 (i INT);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE main_t1 (i INT);
|
||||
|
||||
#
|
||||
# main.<type> in test_schema.<table>
|
||||
#
|
||||
statement error
|
||||
ALTER TABLE main_t1 ADD COLUMN j test_int;
|
||||
----
|
||||
|
||||
#
|
||||
# main.<type> in test_schema.<table>
|
||||
#
|
||||
statement ok
|
||||
ALTER TABLE test_schema.test_t1 ADD COLUMN not_found main_int;
|
||||
|
||||
#
|
||||
# test.<type> in test_schema.<table>, with qualifier
|
||||
# TODO(morrita): Currently the type name cannot be qualified. Fix this.
|
||||
# statement ok
|
||||
# ALTER TABLE test_schema.test_t1 ADD COLUMN k test_schema.test_int;
|
||||
|
||||
#
|
||||
# test.<type> in test_schema.<table>, without qualifier
|
||||
#
|
||||
statement ok
|
||||
ALTER TABLE test_schema.test_t1 ADD COLUMN l test_int;
|
||||
Reference in New Issue
Block a user