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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
# name: test/sql/catalog/test_schema.test
# description: Schema creation/deletion with transactions
# group: [catalog]
statement ok
SET immediate_transaction_mode=true
# create a schema with a table
statement ok con1
CREATE SCHEMA test;
statement ok con1
CREATE OR REPLACE SCHEMA test;
statement ok con1
CREATE TABLE test.hello(i INTEGER);
statement error con1
CREATE OR REPLACE SCHEMA test;
----
table "hello" depends on schema "test".
# in one transaction drop the table and then the schema (without cascade)
statement ok con1
BEGIN TRANSACTION;
statement ok con1
DROP TABLE test.hello;
statement ok con1
DROP SCHEMA test;
statement ok con1
COMMIT;
# now work with multiple connections
# create the same schema
statement ok con1
CREATE SCHEMA test;
statement ok con1
CREATE TABLE test.hello(i INTEGER);
statement ok con1
INSERT INTO test.hello VALUES (2), (3), (4)
# begin the transactions
statement ok con1
BEGIN TRANSACTION
statement ok con2
BEGIN TRANSACTION
# con1 drops the schema and commits it
statement ok con1
DROP TABLE test.hello;
statement ok con1
DROP SCHEMA test;
statement ok con1
COMMIT;
# con2 queries the schema (should still work)
query I con2
SELECT * FROM test.hello
----
2
3
4
# now con2 finishes the transaction and tries again
statement ok con2
ROLLBACK;
statement error con2
SELECT * FROM test.hello
----
Catalog Error: Table with name "test.hello" does not exist because schema "test" does not exist.
statement error
SELECT COUNT(*) FROM non_exist_schema.data
----
Catalog Error: Table with name "non_exist_schema.data" does not exist because schema "non_exist_schema" does not exist.
statement ok
SET catalog_error_max_schemas = 0;
statement error
SELECT COUNT(*) FROM nonexistent_schema.some_table
----
Catalog Error: Table with name "nonexistent_schema.some_table" does not exist because schema "nonexistent_schema" does not exist.
statement ok
ATTACH ':memory:' AS test_catalog;
statement ok
CREATE TABLE test_catalog.main.existing_table(i INTEGER);
statement error
SELECT COUNT(*) FROM test_catalog.nonexistent_schema.some_table
----
Catalog Error: Table with name "nonexistent_schema.some_table" does not exist because schema "nonexistent_schema" does not exist.
statement error
SELECT COUNT(*) FROM test_catalog.main.nonexistent_table
----
Catalog Error: Table with name nonexistent_table does not exist!
statement error
SELECT * FROM test_catalog.missing_schema.missing_table
----
Catalog Error: Table with name "missing_schema.missing_table" does not exist because schema "missing_schema" does not exist.
statement ok
ATTACH ':memory:' AS another_catalog;
statement error
SELECT COUNT(*) FROM another_catalog.invalid_schema.table_name
----
Catalog Error: Table with name "invalid_schema.table_name" does not exist because schema "invalid_schema" does not exist.
statement ok
DETACH test_catalog;
statement ok
DETACH another_catalog;
|