135 lines
2.0 KiB
SQL
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 |