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,109 @@
# name: test/sql/attach/attach_filepath_roundtrip.test
# description: Test file path roundtripping and concurrency
# group: [attach]
require notwindows
# use a concurrent loop to attach many databases
concurrentloop i 1 100
statement maybe
ATTACH '__TEST_DIR__/concurrent.db';
----
endloop
query I
SELECT database_name FROM duckdb_databases() WHERE database_name = 'concurrent';
----
concurrent
statement ok
DETACH concurrent;
# roundtrip
statement ok
ATTACH '__TEST_DIR__/db1.db';
statement ok
DETACH db1;
statement ok
ATTACH '__TEST_DIR__/db1.db';
# multiple connections
statement ok con2
ATTACH '__TEST_DIR__/con2_rollback_detach.db';
statement ok con1
START TRANSACTION;
statement ok con2
START TRANSACTION;
# attach files in con1
statement ok con1
ATTACH '__TEST_DIR__/con1.db';
statement ok con1
ATTACH '__TEST_DIR__/con1_commit.db';
# detach file in con2
statement ok con2
DETACH con2_rollback_detach;
# detach is instant - so we can attach
statement ok con1
ATTACH '__TEST_DIR__/con2_rollback_detach.db';
statement ok con1
DETACH con2_rollback_detach
# can't attach con1.db file in con2
statement error con2
ATTACH '__TEST_DIR__/con1.db';
----
already attached by database
statement ok con1
DETACH con1;
# we still can't attach (need to commit the DETACH)
statement error con2
ATTACH '__TEST_DIR__/con1.db';
----
already attached by database
# commit con1 and roll back con2
statement ok con1
COMMIT;
statement ok con2
ROLLBACK
# now we can ATTACH, as we committed the DETACH
statement ok con2
ATTACH '__TEST_DIR__/con1.db';
statement error con1
ATTACH '__TEST_DIR__/con1.db';
----
already attached
statement error con2
ATTACH '__TEST_DIR__/con1_commit.db';
----
already attached
# we can attach again
statement ok con1
ATTACH '__TEST_DIR__/con2_rollback_detach.db';