123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- # Copyright 2015 - 2019 The Cockroach Authors. All rights reserved.
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- #
- # This file is derived from the logic test suite in CockroachDB. The
- # original file was retrieved on June 10, 2019 from:
- #
- # https://github.com/cockroachdb/cockroach/blob/d2f7fbf5dd1fc1a099bbad790a2e1f7c60a66cc3/pkg/sql/logictest/testdata/logic_test/drop_database
- #
- # The original source code is subject to the terms of the Apache
- # 2.0 license, a copy of which can be found in the LICENSE file at the
- # root of this repository.
- # not supported yet
- halt
- mode cockroach
- statement ok
- CREATE DATABASE "foo-bar"
- query T
- SHOW DATABASES
- ----
- materialize
- foo-bar
- postgres
- system
- test
- statement ok
- CREATE TABLE "foo-bar".t(x INT)
- statement error database.*is not empty and RESTRICT was specified
- DROP DATABASE "foo-bar" RESTRICT
- statement ok
- DROP DATABASE "foo-bar" CASCADE
- query TTT
- SELECT name, database_name, state FROM crdb_internal.tables WHERE name = 't'
- ----
- t [53] DROP
- query T
- SHOW DATABASES
- ----
- materialize
- postgres
- system
- test
- query TT
- SELECT status, running_status FROM [SHOW JOBS]
- ----
- running waiting for GC TTL
- statement ok
- CREATE DATABASE "foo bar"
- query T
- SHOW DATABASES
- ----
- materialize
- foo bar
- postgres
- system
- test
- statement ok
- DROP DATABASE "foo bar" CASCADE
- query T
- SHOW DATABASES
- ----
- materialize
- postgres
- system
- test
- statement ok
- CREATE DATABASE d1
- statement ok
- CREATE DATABASE d2
- statement ok
- CREATE TABLE d1.t1 (k STRING PRIMARY KEY, v STRING)
- statement OK
- CREATE TABLE d2.t1 (k STRING PRIMARY KEY, v STRING)
- statement ok
- CREATE VIEW d1.v1 AS SELECT k,v FROM d1.t1
- statement ok
- CREATE VIEW d1.v2 AS SELECT k,v FROM d1.v1
- statement ok
- CREATE VIEW d2.v1 AS SELECT k,v FROM d2.t1
- statement ok
- CREATE VIEW d2.v2 AS SELECT k,v FROM d1.t1
- statement ok
- CREATE VIEW d2.v3 AS SELECT k,v FROM d1.v2
- statement ok
- CREATE VIEW d2.v4 AS SELECT count(*) FROM d1.t1 as x JOIN d2.t1 as y ON x.k = y.k
- statement ok
- GRANT ALL ON DATABASE d1 TO testuser
- statement ok
- GRANT ALL ON d1.t1 TO testuser
- statement ok
- GRANT ALL ON d1.v1 TO testuser
- statement ok
- GRANT ALL ON d1.v2 TO testuser
- statement ok
- GRANT ALL ON d2.v2 TO testuser
- statement ok
- GRANT ALL ON d2.v3 TO testuser
- user testuser
- statement error user testuser does not have DROP privilege on relation v4
- DROP DATABASE d1 CASCADE
- user root
- query TT
- SELECT * FROM d1.v2
- ----
- query TT
- SELECT * FROM d2.v1
- ----
- query TT
- SELECT * FROM d2.v2
- ----
- query TT
- SELECT * FROM d2.v3
- ----
- query I
- SELECT * FROM d2.v4
- ----
- 0
- query T
- SHOW DATABASES
- ----
- d1
- d2
- materialize
- postgres
- system
- test
- statement ok
- DROP DATABASE d1 CASCADE
- query T
- SHOW DATABASES
- ----
- d2
- materialize
- postgres
- system
- test
- query error pgcode 42P01 relation "d1.v2" does not exist
- SELECT * FROM d1.v2
- query error pgcode 42P01 relation "d2.v2" does not exist
- SELECT * FROM d2.v2
- query error pgcode 42P01 relation "d2.v3" does not exist
- SELECT * FROM d2.v3
- query error pgcode 42P01 relation "d2.v4" does not exist
- SELECT * FROM d2.v4
- query TT
- SELECT * FROM d2.v1
- ----
- statement ok
- DROP DATABASE d2 CASCADE
- query T
- SHOW DATABASES
- ----
- materialize
- postgres
- system
- test
- query error pgcode 42P01 relation "d2.v1" does not exist
- SELECT * FROM d2.v1
- ## drop a database containing tables with foreign key constraints, e.g. materialize#8497
- statement ok
- CREATE DATABASE constraint_db
- statement ok
- CREATE TABLE constraint_db.t1 (
- p FLOAT PRIMARY KEY,
- a INT UNIQUE CHECK (a > 4),
- CONSTRAINT c2 CHECK (a < 99)
- )
- statement ok
- CREATE TABLE constraint_db.t2 (
- t1_ID INT,
- CONSTRAINT fk FOREIGN KEY (t1_ID) REFERENCES constraint_db.t1(a),
- INDEX (t1_ID)
- )
- statement ok
- DROP DATABASE constraint_db CASCADE
- query T
- SHOW DATABASES
- ----
- materialize
- postgres
- system
- test
- query error pgcode 42P01 relation "constraint_db.t1" does not exist
- SELECT * FROM constraint_db.t1
- # Check that the default option is CASCADE, but that safe_updates blocks it
- statement ok
- CREATE DATABASE foo; CREATE TABLE foo.bar(x INT);
- statement ok
- SET sql_safe_updates = TRUE;
- statement error DROP DATABASE on current database
- DROP DATABASE test
- statement error DROP DATABASE on non-empty database without explicit CASCADE
- DROP DATABASE foo
- statement ok
- SET sql_safe_updates = FALSE; DROP DATABASE foo
- # Check that the default databases can be dropped and re-created like any other.
- statement OK
- DROP DATABASE materialize; DROP DATABASE postgres
- statement ok
- CREATE DATABASE materialize; CREATE DATABASE postgres
|