# LogicTest: local local-opt

statement ok
CREATE USER user1

query T colnames
SHOW USERS
----
user_name
root
testuser
user1

statement ok
DROP USER user1

query T colnames
SHOW USERS
----
user_name
root
testuser

statement ok
CREATE USER user1

query T colnames
SHOW USERS
----
user_name
root
testuser
user1

statement ok
DROP USER USEr1

query T colnames
SHOW USERS
----
user_name
root
testuser

statement error user user1 does not exist
DROP USER user1

statement error user user1 does not exist
DROP USER usER1

statement ok
DROP USER IF EXISTS user1

statement error username "node" reserved
DROP USER node

statement error pq: username "foo☂" invalid; usernames are case insensitive, must start with a letter or underscore, may contain letters, digits, dashes, or underscores, and must not exceed 63 characters
DROP USER foo☂

statement ok
CREATE USER user1

statement ok
CREATE USER user2

statement ok
CREATE USER user3

statement ok
CREATE USER user4

query T colnames
SHOW USERS
----
user_name
root
testuser
user1
user2
user3
user4

statement ok
DROP USER user1,user2

query T colnames
SHOW USERS
----
user_name
root
testuser
user3
user4

statement error user user1 does not exist
DROP USER user1,user3

query T colnames
SHOW USERS
----
user_name
root
testuser
user3
user4

statement ok
CREATE USER user1

statement ok
CREATE TABLE foo(x INT);
 GRANT SELECT ON foo TO user3;
 GRANT SELECT ON DATABASE test TO user1

statement error cannot drop users or roles user1, user3: grants still exist on test, test.public.foo
DROP USER IF EXISTS user1,user3

statement error cannot drop users or roles user1, user3: grants still exist on test
REVOKE SELECT ON foo FROM user3;
  DROP USER IF EXISTS user1,user3

statement ok
REVOKE SELECT ON DATABASE test FROM user1;
  DROP USER IF EXISTS user1,user3

statement ok
PREPARE du AS DROP USER $1;
 EXECUTE du('user4')

query T colnames
SHOW USERS
----
user_name
root
testuser

user testuser

statement error pq: user testuser does not have DELETE privilege on relation users
DROP USER user2

user root

statement error pq: cannot drop user or role root: grants still exist on .*
DROP USER root

statement error pq: cannot drop user or role admin: grants still exist on .*
DROP USER admin
