should be it
This commit is contained in:
45
external/duckdb/test/sql/alter/struct/add_col_nested_struct.test
vendored
Normal file
45
external/duckdb/test/sql/alter/struct/add_col_nested_struct.test
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
# name: test/sql/alter/struct/add_col_nested_struct.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: add column to a struct nested
|
||||
# group: [struct]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(s STRUCT(s2 STRUCT(v1 INT, v2 INT)))
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (ROW(ROW(1, 1))), (ROW(ROW(2, 2)))
|
||||
|
||||
# add a column to a nested struct
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN s.s2.k INTEGER
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'s2': {'v1': 1, 'v2': 1, 'k': NULL}}
|
||||
{'s2': {'v1': 2, 'v2': 2, 'k': NULL}}
|
||||
|
||||
# already exists
|
||||
statement error
|
||||
ALTER TABLE test ADD COLUMN s.s2.v1 VARCHAR
|
||||
----
|
||||
field already exists in struct s2
|
||||
|
||||
# this just gets ignored
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN IF NOT EXISTS s.s2.v1 VARCHAR
|
||||
|
||||
# we can add columns at all levels
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN s.i INTEGER DEFAULT 100
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'s2': {'v1': 1, 'v2': 1, 'k': NULL}, 'i': 100}
|
||||
{'s2': {'v1': 2, 'v2': 2, 'k': NULL}, 'i': 100}
|
||||
|
||||
statement error
|
||||
ALTER TABLE test ADD COLUMN s.s2.v1.x INTEGER
|
||||
----
|
||||
Binder Error: Column 'v1' is not a nested type, ADD COLUMN can only be used on nested types
|
||||
|
||||
79
external/duckdb/test/sql/alter/struct/add_col_struct.test
vendored
Normal file
79
external/duckdb/test/sql/alter/struct/add_col_struct.test
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
# name: test/sql/alter/struct/add_col_struct.test
|
||||
# description: Test ALTER TABLE ADD COLUMN: add column to a struct
|
||||
# group: [struct]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(s STRUCT(i INTEGER, j INTEGER))
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (ROW(1, 1)), (ROW(2, 2))
|
||||
|
||||
# add a column to a struct
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN s.k INTEGER
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 1, 'j': 1, 'k': NULL}
|
||||
{'i': 2, 'j': 2, 'k': NULL}
|
||||
|
||||
# defaults
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN s.l INTEGER DEFAULT 42
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 1, 'j': 1, 'k': NULL, 'l': 42}
|
||||
{'i': 2, 'j': 2, 'k': NULL, 'l': 42}
|
||||
|
||||
# this is transactional
|
||||
statement ok
|
||||
BEGIN
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN s.m INTEGER DEFAULT 42
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 1, 'j': 1, 'k': NULL, 'l': 42, 'm': 42}
|
||||
{'i': 2, 'j': 2, 'k': NULL, 'l': 42, 'm': 42}
|
||||
|
||||
statement ok
|
||||
ROLLBACK
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 1, 'j': 1, 'k': NULL, 'l': 42}
|
||||
{'i': 2, 'j': 2, 'k': NULL, 'l': 42}
|
||||
|
||||
# already exists
|
||||
statement error
|
||||
ALTER TABLE test ADD COLUMN s.i VARCHAR
|
||||
----
|
||||
field already exists in struct s
|
||||
|
||||
# this just gets ignored
|
||||
statement ok
|
||||
ALTER TABLE test ADD COLUMN IF NOT EXISTS s.i VARCHAR
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 1, 'j': 1, 'k': NULL, 'l': 42}
|
||||
{'i': 2, 'j': 2, 'k': NULL, 'l': 42}
|
||||
|
||||
# not a struct
|
||||
statement error
|
||||
ALTER TABLE test ADD COLUMN s.i.a INTEGER
|
||||
----
|
||||
Binder Error: Column 'i' is not a nested type, ADD COLUMN can only be used on nested types
|
||||
|
||||
# nested column does not exist
|
||||
statement error
|
||||
ALTER TABLE test ADD COLUMN s.x.a INTEGER
|
||||
----
|
||||
does not exist
|
||||
39
external/duckdb/test/sql/alter/struct/drop_col_nested_struct.test
vendored
Normal file
39
external/duckdb/test/sql/alter/struct/drop_col_nested_struct.test
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
# name: test/sql/alter/struct/drop_col_nested_struct.test
|
||||
# description: Test ALTER TABLE DROP COLUMN: drop column from a nested struct
|
||||
# group: [struct]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(s STRUCT(i INT, s2 STRUCT(v1 INT, v2 INT)))
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (ROW(42, ROW(1, 1))), (ROW(84, ROW(2, 2)))
|
||||
|
||||
# add a column to a nested struct
|
||||
statement ok
|
||||
ALTER TABLE test DROP s.s2.v1
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 42, 's2': {'v2': 1}}
|
||||
{'i': 84, 's2': {'v2': 2}}
|
||||
|
||||
# does not exists
|
||||
statement error
|
||||
ALTER TABLE test DROP COLUMN s.s2.v1
|
||||
----
|
||||
does not exist
|
||||
|
||||
# this just gets ignored
|
||||
statement ok
|
||||
ALTER TABLE test DROP COLUMN IF EXISTS s.s2.v1
|
||||
|
||||
# we can drop the struct in its entirety
|
||||
statement ok
|
||||
ALTER TABLE test DROP COLUMN s.s2
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'i': 42}
|
||||
{'i': 84}
|
||||
52
external/duckdb/test/sql/alter/struct/drop_col_struct.test
vendored
Normal file
52
external/duckdb/test/sql/alter/struct/drop_col_struct.test
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
# name: test/sql/alter/struct/drop_col_struct.test
|
||||
# description: Test ALTER TABLE DROP COLUMN: drop column from a struct
|
||||
# group: [struct]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(s STRUCT(i INTEGER, j INTEGER))
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (ROW(1, 1)), (ROW(2, 2))
|
||||
|
||||
# drop a column from a struct
|
||||
statement ok
|
||||
ALTER TABLE test DROP COLUMN s.i
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'j': 1}
|
||||
{'j': 2}
|
||||
|
||||
# we cannot drop the last column
|
||||
statement error
|
||||
ALTER TABLE test DROP COLUMN s.j
|
||||
----
|
||||
last field
|
||||
|
||||
# does not exists
|
||||
statement error
|
||||
ALTER TABLE test DROP COLUMN s.v
|
||||
----
|
||||
does not exist
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test DROP COLUMN IF EXISTS s.v
|
||||
|
||||
# not a struct
|
||||
statement error
|
||||
ALTER TABLE test DROP COLUMN s.j.a
|
||||
----
|
||||
Catalog Error: Cannot drop field from column "s" - not a nested type
|
||||
|
||||
# field does not exist
|
||||
statement error
|
||||
ALTER TABLE test DROP COLUMN z.j
|
||||
----
|
||||
does not exist
|
||||
|
||||
# nested column does not exist
|
||||
statement error
|
||||
ALTER TABLE test DROP COLUMN s.v1.a
|
||||
----
|
||||
does not exist
|
||||
36
external/duckdb/test/sql/alter/struct/rename_col_nested_struct.test
vendored
Normal file
36
external/duckdb/test/sql/alter/struct/rename_col_nested_struct.test
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
# name: test/sql/alter/struct/rename_col_nested_struct.test
|
||||
# description: Test ALTER TABLE RENAME COLUMN: rename column of a nested struct
|
||||
# group: [struct]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(s STRUCT(s2 STRUCT(v1 INT, v2 INT)))
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (ROW(ROW(1, 1))), (ROW(ROW(2, 2)))
|
||||
|
||||
# rename a column of a nested struct
|
||||
statement ok
|
||||
ALTER TABLE test RENAME s.s2.v1 TO i
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'s2': {'i': 1, 'v2': 1}}
|
||||
{'s2': {'i': 2, 'v2': 2}}
|
||||
|
||||
|
||||
# already exists
|
||||
statement error
|
||||
ALTER TABLE test RENAME COLUMN s.s2.v2 TO i
|
||||
----
|
||||
already exists
|
||||
|
||||
# rename the entire struct
|
||||
statement ok
|
||||
ALTER TABLE test RENAME COLUMN s.s2 TO x
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'x': {'i': 1, 'v2': 1}}
|
||||
{'x': {'i': 2, 'v2': 2}}
|
||||
60
external/duckdb/test/sql/alter/struct/rename_col_struct.test
vendored
Normal file
60
external/duckdb/test/sql/alter/struct/rename_col_struct.test
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
# name: test/sql/alter/struct/rename_col_struct.test
|
||||
# description: Test ALTER TABLE RENAME COLUMN: rename column of a struct
|
||||
# group: [struct]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE test(s STRUCT(i INTEGER, j INTEGER))
|
||||
|
||||
statement ok
|
||||
INSERT INTO test VALUES (ROW(1, 1)), (ROW(2, 2))
|
||||
|
||||
# add a column to a struct
|
||||
statement ok
|
||||
ALTER TABLE test RENAME s.i TO v1
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'v1': 1, 'j': 1}
|
||||
{'v1': 2, 'j': 2}
|
||||
|
||||
statement ok
|
||||
BEGIN
|
||||
|
||||
statement ok
|
||||
ALTER TABLE test RENAME s.j TO v2
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'v1': 1, 'v2': 1}
|
||||
{'v1': 2, 'v2': 2}
|
||||
|
||||
statement ok
|
||||
ROLLBACK
|
||||
|
||||
query I
|
||||
SELECT * FROM test
|
||||
----
|
||||
{'v1': 1, 'j': 1}
|
||||
{'v1': 2, 'j': 2}
|
||||
|
||||
statement error
|
||||
ALTER TABLE test RENAME s.j TO v1
|
||||
----
|
||||
already exists
|
||||
|
||||
statement error
|
||||
ALTER TABLE test RENAME s.j.x TO v2
|
||||
----
|
||||
Catalog Error: Cannot rename field from column "s" - not a nested type
|
||||
|
||||
statement error
|
||||
ALTER TABLE test RENAME s.i TO v2
|
||||
----
|
||||
does not exist
|
||||
|
||||
statement error
|
||||
ALTER TABLE test RENAME x.i TO v2
|
||||
----
|
||||
does not exist
|
||||
Reference in New Issue
Block a user