Files
email-tracker/external/duckdb/test/sql/create/create_as.test
2025-10-24 19:21:19 -05:00

135 lines
2.0 KiB
SQL

# name: test/sql/create/create_as.test
# description: Test CREATE TABLE AS SELECT (CTAS) statements
# group: [create]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE tbl1 AS SELECT 1;
query I
SELECT * FROM tbl1;
----
1
statement ok
CREATE TABLE tbl2 AS SELECT 2 AS f;
query I
SELECT * FROM tbl2;
----
2
statement ok
CREATE OR REPLACE TABLE tbl3 AS SELECT 3;
query I
SELECT * FROM tbl3;
----
3
statement error
CREATE TABLE tbl1 AS SELECT 3;
----
statement ok
CREATE OR REPLACE TABLE tbl1 AS SELECT 4;
query I
SELECT * FROM tbl1;
----
4
statement ok
CREATE OR REPLACE TABLE tbl1 AS SELECT 'hello' UNION ALL SELECT 'world';
query I
SELECT * FROM tbl1;
----
hello
world
statement ok
CREATE OR REPLACE TABLE tbl1 AS SELECT 5 WHERE false;
query I
SELECT * FROM tbl1;
----
statement error
CREATE TABLE tbl4 IF NOT EXISTS AS SELECT 4;
----
Parser Error: syntax error at or near "IF"
statement error
CREATE OR REPLACE TABLE tbl4 IF NOT EXISTS AS SELECT 4;
----
Parser Error: syntax error at or near "IF"
### CREATE TABLE t(col1, col2) AS SELECT ...
statement ok
CREATE TABLE tbl4(col1, col2) AS SELECT 1, 'hello';
query II
SELECT * FROM tbl4;
----
1 hello
statement ok
CREATE OR REPLACE TABLE tbl4(col1, col2) AS SELECT 2, 'duck';
query II
SELECT * FROM tbl4;
----
2 duck
statement ok
CREATE TABLE IF NOT EXISTS tbl5(col1, col2) AS SELECT 3, 'database';
query II
SELECT * FROM tbl5;
----
3 database
# define a column name need quote
statement ok
CREATE OR REPLACE TABLE tbl5(col1, "col need ' quote") AS SELECT 3.5, 'quote';
query II
SELECT * FROM tbl5;
----
3.5 quote
#colname and query mismatch
statement ok
CREATE TABLE tbl6(col1) AS SELECT 4 ,'mismatch';
query II
SELECT * FROM tbl6;
----
4 mismatch
statement error
CREATE TABLE tbl7(col1, col2) AS SELECT 5;
----
Binder Error: Target table has more colum names than query result.
# WITH NO DATA / WITH DATA
statement ok
CREATE TABLE tbl8 AS SELECT 42 WITH NO DATA
query I
SELECT COUNT(*) FROM tbl8;
----
0
statement ok
CREATE TABLE tbl9 AS SELECT 42 WITH DATA
query I
SELECT COUNT(*) FROM tbl9;
----
1