mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-17 08:34:19 +01:00
84 lines
2.6 KiB
Tcl
Executable File
84 lines
2.6 KiB
Tcl
Executable File
#!/usr/bin/env tclsh
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
|
|
# Test qualified table name access to main database
|
|
do_execsql_test_small attach-main-qualified {
|
|
SELECT count(id) FROM main.demo;
|
|
} {5}
|
|
|
|
|
|
# Test unqualified vs qualified access
|
|
do_execsql_test_small attach-unqualified-vs-qualified {
|
|
SELECT COUNT(*) FROM demo;
|
|
SELECT COUNT(*) FROM main.demo;
|
|
} {5
|
|
5}
|
|
|
|
# Test attach reserved name - main (should fail)
|
|
do_execsql_test_error attach-reserved-main {
|
|
ATTACH DATABASE "testing/testing_small.db" AS main
|
|
} {(.*in use.*)}
|
|
|
|
# Test attach reserved name - temp (should fail)
|
|
do_execsql_test_error attach-reserved-temp {
|
|
ATTACH DATABASE "testing/testing_small.db" AS temp
|
|
} {(.*in use.*)}
|
|
|
|
# Test attach duplicate database name - arbitrary (should fail)
|
|
do_execsql_test_error attach-duplicate-name {
|
|
ATTACH DATABASE "testing/testing_small.db" as small;
|
|
ATTACH DATABASE "testing/testing_small.db" as small;
|
|
} {(.*in use.*)}
|
|
|
|
# Test querying attached file database
|
|
do_execsql_test_on_specific_db {:memory:} attach-db-query {
|
|
ATTACH DATABASE "testing/testing_small.db" AS small;
|
|
SELECT value FROM small.demo where id = 1;
|
|
} {A}
|
|
|
|
# Test detach database
|
|
do_execsql_test_on_specific_db {:memory:} detach-database {
|
|
ATTACH DATABASE "testing/testing_small.db" AS small;
|
|
DETACH DATABASE small;
|
|
pragma database_list;
|
|
} {0|main|}
|
|
|
|
# Test detach non-existent database (should fail)
|
|
do_execsql_test_error detach-non-existent {
|
|
DETACH DATABASE nonexistent;
|
|
} {(.*no such database.*)}
|
|
|
|
# Test attach in-memory database
|
|
do_execsql_test_on_specific_db {:memory:} attach-memory-database {
|
|
ATTACH DATABASE ':memory:' AS mem;
|
|
pragma database_list;
|
|
} {0|main|
|
|
2|mem|}
|
|
|
|
# Test join between main and attached database
|
|
do_execsql_test_on_specific_db {:memory:} attach-cross-database-join {
|
|
ATTACH DATABASE "testing/testing_small.db" as small;
|
|
create table joiners (id int, otherid int);
|
|
insert into joiners (id, otherid) values (1,1);
|
|
insert into joiners (id, otherid) values (3,3);
|
|
select s.value from joiners j inner join small.demo s where j.otherid = s.id;
|
|
} {A
|
|
B}
|
|
|
|
# Test queries after detach (should fail for detached database)
|
|
do_execsql_test_error query-after-detach {
|
|
ATTACH DATABASE "testing/testing_small.db" as small;
|
|
DETACH DATABASE small;
|
|
select * from small.sqlite_schema;
|
|
} {(.*no such.*)}
|
|
|
|
# regression test for https://github.com/tursodatabase/turso/issues/3540
|
|
do_execsql_test_on_specifc_db {:memory:} attach-from-memory-db {
|
|
CREATE TABLE t(a);
|
|
INSERT INTO t SELECT value from generate_series(1,10);
|
|
ATTACH DATABASE 'testing/testing.db' as a;
|
|
SELECT * from a.products, t LIMIT 1;
|
|
} {1|hat|79.0|1}
|