should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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.*

View 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
----

View 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;