# LogicTest: default

statement ok
CREATE DATABASE "foo-bar"

query T
SHOW DATABASES
----
crdb_internal
foo-bar
information_schema
pg_catalog
system
test

statement ok
DROP DATABASE "foo-bar"

query T
SHOW DATABASES
----
crdb_internal
information_schema
pg_catalog
system
test

statement ok
CREATE DATABASE "foo bar"

query T
SHOW DATABASES
----
crdb_internal
foo bar
information_schema
pg_catalog
system
test

statement ok
DROP DATABASE "foo bar"

query T
SHOW DATABASES
----
crdb_internal
information_schema
pg_catalog
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 view v4
DROP DATABASE d1

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
----
crdb_internal
d1
d2
information_schema
pg_catalog
system
test

statement ok
DROP DATABASE d1

query T
SHOW DATABASES
----
crdb_internal
d2
information_schema
pg_catalog
system
test

query error database "d1" does not exist
SELECT * FROM d1.v2

query error table "d2.v2" does not exist
SELECT * FROM d2.v2

query error table "d2.v3" does not exist
SELECT * FROM d2.v3

query error table "d2.v4" does not exist
SELECT * FROM d2.v4

query TT
SELECT * FROM d2.v1
----

statement ok
DROP DATABASE d2

query T
SHOW DATABASES
----
crdb_internal
information_schema
pg_catalog
system
test

query error database "d2" does not exist
SELECT * FROM d2.v1

## drop a database containing tables with foreign key constraints, e.g. #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

query T
SHOW DATABASES
----
crdb_internal
information_schema
pg_catalog
system
test

query error database "constraint_db" does not exist
SELECT * FROM constraint_db.t1
