# LogicTest: default parallel-stmts distsql

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

query TTT
SHOW GRANTS ON DATABASE test
----
test        root      ALL

statement ok
CREATE TABLE kv (
  k INT PRIMARY KEY,
  v INT
)

statement ok
INSERT INTO kv VALUES (1, 2), (3, 4), (5, 6), (7, 8)

query II rowsort
SELECT * FROM kv
----
1 2
3 4
5 6
7 8

statement ok
ALTER DATABASE test RENAME TO u

statement error table "kv" does not exist
SELECT * FROM kv
----

statement error database "test" does not exist
SHOW GRANTS ON DATABASE test

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

# check the name in descriptor is also changed
query TTT
SHOW GRANTS ON DATABASE u
----
u        root      ALL

statement ok
SET DATABASE = u

query II rowsort
SELECT * FROM kv
----
1 2
3 4
5 6
7 8

statement error empty database name
ALTER DATABASE "" RENAME TO u

statement error empty database name
ALTER DATABASE u RENAME TO ""

statement ok
ALTER DATABASE u RENAME TO u

statement ok
CREATE DATABASE t

statement error the new database name "u" already exists
ALTER DATABASE t RENAME TO u

statement ok
GRANT ALL ON DATABASE t TO testuser

user testuser

statement error only root is allowed to ALTER DATABASE ... RENAME
ALTER DATABASE t RENAME TO v

query T
SHOW DATABASES
----
crdb_internal
information_schema
pg_catalog
t

user root

# Test that renames aren't allowed while views refer to any of a DB's tables,
# both for views in that database and for views in a different database.

statement ok
CREATE VIEW t.v AS SELECT k,v FROM u.kv

query T
SHOW TABLES FROM u
----
kv

statement error cannot rename database because view "t.v" depends on table "kv"
ALTER DATABASE u RENAME TO v

statement ok
DROP VIEW t.v

statement ok
ALTER DATABASE u RENAME TO v

statement ok
CREATE VIEW v.v AS SELECT k,v FROM v.kv

statement error cannot rename database because view "v" depends on table "kv"
ALTER DATABASE v RENAME TO u
