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,37 @@
# name: test/sql/storage/read_duckdb/concurrent_duckdb_read.test_slow
# description: Test concurrent read of a DuckDB file
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_concurrent.db'
statement ok
CREATE TABLE read_duckdb_concurrent.my_tbl AS SELECT * FROM range(1000000) t(i)
statement ok
DETACH read_duckdb_concurrent
concurrentloop i 0 10
loop x 0 100
onlyif i=0
query I
SHOW DATABASES
----
memory
onlyif i=0
query I
SHOW TABLES
----
endloop
onlyif i>0
query II
SELECT COUNT(*), SUM(i) FROM read_duckdb('__TEST_DIR__/read_duckdb_concurrent.db')
----
1000000 499999500000
endloop

View File

@@ -0,0 +1,91 @@
# name: test/sql/storage/read_duckdb/read_duckdb_basic.test
# description: Test basic usage of read_duckdb
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_test.db'
statement ok
CREATE TABLE read_duckdb_test.my_tbl AS SELECT 42 i
# we cannot read a database that is already attached
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test.db')
----
already attached by database
statement ok
DETACH read_duckdb_test
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test.db')
----
42
query I
SELECT COUNT(*) FROM duckdb_databases
----
1
# globbing
statement ok
ATTACH '__TEST_DIR__/read_duckdb_test2.db'
statement ok
CREATE TABLE read_duckdb_test2.other_tbl AS SELECT 100 i
statement ok
DETACH read_duckdb_test2
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test*.db')
----
42
100
# replacement scan
query I
SELECT * FROM '__TEST_DIR__/read_duckdb_test*.db'
----
42
100
# prepared statement
statement ok
PREPARE v1 AS FROM read_duckdb('__TEST_DIR__/read_duckdb_test*.db')
query I
EXECUTE v1
----
42
100
# multi-table
statement ok
ATTACH '__TEST_DIR__/read_duckdb_test.db'
statement ok
CREATE TABLE read_duckdb_test.my_tbl2 AS SELECT 84 j
statement ok
DETACH read_duckdb_test
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test.db')
----
multiple tables
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test.db', table_name='my_tbl')
----
42
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test.db', table_name='my_tbl2')
----
84
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_test.db', table_name='my_tblx')
----
my_tbl2

View File

@@ -0,0 +1,30 @@
# name: test/sql/storage/read_duckdb/read_duckdb_generated.test
# description: Test read_duckdb with generated columns
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_generated.db' AS rd
statement ok
CREATE TABLE rd.tbl (
price INTEGER,
amount_sold INTEGER,
total_profit AS (price * amount_sold),
non_generated INTEGER
);
statement ok
INSERT INTO rd.tbl VALUES (5,4, 100);
statement ok
DETACH rd
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_generated.db')
----
total_profit
query III
SELECT non_generated + 42, price, amount_sold FROM read_duckdb('__TEST_DIR__/read_duckdb_generated.db')
----
142 5 4

View File

@@ -0,0 +1,28 @@
# name: test/sql/storage/read_duckdb/read_duckdb_index.test
# description: Test read_duckdb with an index
# group: [read_duckdb]
# FIXME: bug in WAL replay with read-only mode attach
require no_alternative_verify
statement ok
ATTACH '__TEST_DIR__/read_duckdb_index.db'
statement ok
CREATE TABLE read_duckdb_index.my_tbl(i INTEGER PRIMARY KEY);
statement ok
INSERT INTO read_duckdb_index.my_tbl SELECT i + 1 FROM range(1000000) t(i);
statement ok
DETACH read_duckdb_index
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_index.db') WHERE i=42873
----
42873
query II
SELECT *, rowid FROM read_duckdb('__TEST_DIR__/read_duckdb_index.db') WHERE i=42873
----
42873 42872

View File

@@ -0,0 +1,42 @@
# name: test/sql/storage/read_duckdb/read_duckdb_schema.test
# description: Test basic usage of read_duckdb
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_schema.db' AS rd
statement ok
CREATE SCHEMA rd.s1;
statement ok
CREATE SCHEMA rd.s2;
statement ok
CREATE TABLE rd.s1.my_tbl AS SELECT 42 i
statement ok
CREATE TABLE rd.s2.my_tbl AS SELECT 84 i
statement ok
DETACH rd
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_schema.db')
----
s1.my_tbl
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_schema.db', schema_name='s1', table_name='my_tbl')
----
42
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_schema.db', schema_name='s2', table_name='my_tbl')
----
84
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_schema.db', schema_name='s3', table_name='my_tbl')
----
schema_name="s3", table_name="my_tbl"

View File

@@ -0,0 +1,26 @@
# name: test/sql/storage/read_duckdb/read_duckdb_suggested.test
# description: Test suggestions
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_suggested.db' AS suggested
foreach table_name aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ppp qqq rrr sss ttt uuu vvv
statement ok
CREATE TABLE suggested.${table_name} AS SELECT 42 i
endloop
statement ok
DETACH suggested
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_suggested.db', table_name='ffg')
----
fff
statement error
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_suggested.db', table_name='vvx')
----
vvv

View File

@@ -0,0 +1,54 @@
# name: test/sql/storage/read_duckdb/read_duckdb_top_n.test
# group: [read_duckdb]
# create a bunch of tables
loop i 0 5
statement ok
ATTACH '__TEST_DIR__/read_duckdb_top_n${i}.db' AS rd
statement ok
CREATE TABLE rd.tbl AS SELECT ${i} grp, i val FROM range(${i} * 1000, ${i} * 1000 + 1000) t(i)
statement ok
DETACH rd
endloop
query II
FROM '__TEST_DIR__/read_duckdb_top_n*.db' ORDER BY val DESC LIMIT 5
----
4 4999
4 4998
4 4997
4 4996
4 4995
query II
FROM '__TEST_DIR__/read_duckdb_top_n*.db' WHERE grp<=2 ORDER BY val DESC LIMIT 5
----
2 2999
2 2998
2 2997
2 2996
2 2995
query I
SELECT val FROM '__TEST_DIR__/read_duckdb_top_n*.db' WHERE grp<=2 ORDER BY val DESC LIMIT 5
----
2999
2998
2997
2996
2995
query I
SELECT SUM(val) FROM '__TEST_DIR__/read_duckdb_top_n*.db' WHERE grp%2=0
----
7498500
query I
SELECT SUM(val) FROM '__TEST_DIR__/read_duckdb_top_n*.db' WHERE grp::VARCHAR = '2'
----
2499500

View File

@@ -0,0 +1,78 @@
# name: test/sql/storage/read_duckdb/read_duckdb_tpch.test_slow
# group: [read_duckdb]
require tpch
statement ok
CALL dbgen(sf=1, suffix='_original');
foreach tbl lineitem nation orders supplier part partsupp region customer
statement ok
ATTACH '__TEST_DIR__/${tbl}_sf1.db' AS ${tbl}
statement ok
CREATE TABLE ${tbl}.${tbl} AS FROM ${tbl}_original
statement ok
DETACH ${tbl}
statement ok
CREATE VIEW ${tbl} AS FROM read_duckdb('__TEST_DIR__/${tbl}_sf1.db')
endloop
loop i 1 9
query I
PRAGMA tpch(${i})
----
<FILE>:extension/tpch/dbgen/answers/sf1/q0${i}.csv
endloop
loop i 10 23
query I
PRAGMA tpch(${i})
----
<FILE>:extension/tpch/dbgen/answers/sf1/q${i}.csv
endloop
# top-n
query IIIIIIII
SELECT o_orderkey, o_custkey, o_orderstatus, o_totalprice, o_orderdate, o_orderpriority, o_clerk, o_shippriority FROM orders ORDER BY o_orderkey LIMIT 5;
----
1 36901 O 173665.47 1996-01-02 5-LOW Clerk#000000951 0
2 78002 O 46929.18 1996-12-01 1-URGENT Clerk#000000880 0
3 123314 F 193846.25 1993-10-14 5-LOW Clerk#000000955 0
4 136777 O 32151.78 1995-10-11 5-LOW Clerk#000000124 0
5 44485 F 144659.20 1994-07-30 5-LOW Clerk#000000925 0
query IIIIIIII
SELECT o_orderkey, o_custkey, o_orderstatus, o_totalprice, o_orderdate, o_orderpriority, o_clerk, o_shippriority FROM orders ORDER BY o_orderkey DESC LIMIT 5;
----
6000000 110063 O 37625.29 1996-08-31 2-HIGH Clerk#000000411 0
5999975 113398 F 63216.65 1993-07-25 1-URGENT Clerk#000000813 0
5999974 55448 F 92750.90 1993-07-28 3-MEDIUM Clerk#000000776 0
5999973 32071 O 68906.56 1997-07-13 4-NOT SPECIFIED Clerk#000000130 0
5999972 143594 O 114856.68 1996-05-02 3-MEDIUM Clerk#000000536 0
query IIIIIIIIIIIIIII
SELECT l_orderkey, l_partkey, l_suppkey, l_linenumber, l_quantity, l_extendedprice, l_discount, l_tax, l_returnflag, l_linestatus, l_shipdate, l_commitdate, l_receiptdate, l_shipinstruct, l_shipmode FROM lineitem ORDER BY l_shipdate, l_orderkey LIMIT 5;
----
721220 177803 5355 2 19 35735.20 0.08 0.03 R F 1992-01-02 1992-02-04 1992-01-09 TAKE BACK RETURN SHIP
842980 188156 5711 4 5 6220.75 0.01 0.03 A F 1992-01-02 1992-03-20 1992-01-20 COLLECT COD REG AIR
904677 56678 1689 1 43 70290.81 0.08 0.01 R F 1992-01-02 1992-03-22 1992-01-14 COLLECT COD AIR
990147 154290 4291 1 6 8065.74 0.10 0.01 R F 1992-01-02 1992-03-01 1992-01-15 NONE REG AIR
1054181 16217 6218 1 45 50994.45 0.03 0.08 R F 1992-01-02 1992-02-05 1992-01-15 NONE MAIL
query IIIIIIIIIIIIIII
SELECT l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus,l_shipdate,l_commitdate,l_receiptdate,l_shipinstruct,l_shipmode FROM lineitem ORDER BY l_orderkey DESC, l_shipdate DESC LIMIT 5;
----
6000000 32255 2256 1 5 5936.25 0.04 0.03 N O 1996-11-02 1996-11-19 1996-12-01 TAKE BACK RETURN MAIL
6000000 96127 6128 2 28 31447.36 0.01 0.02 N O 1996-09-22 1996-10-01 1996-10-21 NONE AIR
5999975 37131 2138 3 18 19226.34 0.04 0.01 A F 1993-11-17 1993-08-28 1993-12-08 DELIVER IN PERSON FOB
5999975 6452 1453 2 7 9509.15 0.04 0.00 A F 1993-11-02 1993-09-23 1993-11-19 DELIVER IN PERSON SHIP
5999975 7272 2273 1 32 37736.64 0.07 0.01 R F 1993-10-07 1993-09-30 1993-10-21 COLLECT COD REG AIR

View File

@@ -0,0 +1,28 @@
# name: test/sql/storage/read_duckdb/read_duckdb_transaction.test
# description: Test using read_duckdb in a transaction
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_transaction.db' AS rd
statement ok
CREATE TABLE rd.my_tbl AS SELECT 42 i
statement ok
DETACH rd
statement ok
BEGIN
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_transaction.db')
----
42
query I
SELECT * FROM read_duckdb('__TEST_DIR__/read_duckdb_transaction.db')
----
42
statement ok
COMMIT

View File

@@ -0,0 +1,32 @@
# name: test/sql/storage/read_duckdb/read_duckdb_union_by_name.test
# description: Test read_duckdb with union by name
# group: [read_duckdb]
statement ok
ATTACH '__TEST_DIR__/read_duckdb_unionbyname1.db' AS rd
statement ok
CREATE TABLE rd.my_tbl AS SELECT 100 i, 84 col1
statement ok
DETACH rd
statement ok
ATTACH '__TEST_DIR__/read_duckdb_unionbyname2.db' AS rd
statement ok
CREATE TABLE rd.my_tbl AS SELECT 200 i, 84 col2
statement ok
DETACH rd
query III
SELECT * FROM read_duckdb(['__TEST_DIR__/read_duckdb_unionbyname1.db', '__TEST_DIR__/read_duckdb_unionbyname2.db'], union_by_name=true);
----
100 84 NULL
200 NULL 84
statement error
SELECT * FROM read_duckdb(['__TEST_DIR__/read_duckdb_unionbyname1.db', '__TEST_DIR__/read_duckdb_unionbyname2.db']);
----
could not be found in file

View File

@@ -0,0 +1,23 @@
# name: test/sql/storage/read_duckdb/read_duckdb_virtual_columns.test
# description: Test basic usage of read_duckdb
# group: [read_duckdb]
foreach dbindex 1 2
statement ok
ATTACH '__TEST_DIR__/read_duckdb_virt${dbindex}.db' AS rd
statement ok
CREATE TABLE rd.my_tbl AS SELECT 42 + i AS v FROM range(0, ${dbindex}) t(i)
statement ok
DETACH rd
endloop
query III
SELECT rowid, (filename.replace('\', '/').split('/'))[3], * FROM read_duckdb('__TEST_DIR__/read_duckdb_virt[1-2].db') ORDER BY filename, rowid
----
0 read_duckdb_virt1.db 42
0 read_duckdb_virt2.db 42
1 read_duckdb_virt2.db 43