1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
# name: test/sql/attach/attach_or_replace.test
# description: Test ATTACH OR REPLACE
# group: [attach]
statement ok
PRAGMA enable_verification
statement ok
ATTACH '__TEST_DIR__/attach_or_replace.db' AS db1;
statement ok
CREATE TABLE db1.all_types AS SELECT * FROM test_all_types();
statement ok
ATTACH '__TEST_DIR__/attach_or_replace_new.db' AS db2;
statement ok
CREATE TABLE db2.all_types_new AS SELECT * FROM test_all_types();
statement ok
DETACH db2;
# ATTACH OR REPLACE same path to same alias should work
statement ok
ATTACH OR REPLACE '__TEST_DIR__/attach_or_replace.db' AS db1;
statement ok
SELECT * FROM db1.all_types;
# ATTACHing the same path to a different alias is an error
statement error
ATTACH OR REPLACE '__TEST_DIR__/attach_or_replace.db' AS db2;
----
already attached
statement ok
SELECT * FROM db1.all_types;
# ATTACHing a new path to an existing alias detaches the old path and attaches the new path in its place
statement ok
ATTACH OR REPLACE '__TEST_DIR__/attach_or_replace_new.db' AS db1;
# The previous database is no longer attached at this alias, so the table is not found
statement error
SELECT * FROM db1.all_types;
----
does not exist
# The table in the new file is found
statement ok
SELECT * FROM db1.all_types_new;
# ATTACHing the now-unattached previous path should now work
statement ok
ATTACH '__TEST_DIR__/attach_or_replace.db' AS db2;
statement ok
SELECT * FROM db2.all_types;
|