File: attach_or_replace.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (59 lines) | stat: -rw-r--r-- 1,430 bytes parent folder | download | duplicates (3)
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;