# LogicTest: local local-opt

statement ok
CREATE DATABASE a

statement ok
CREATE USER readwrite

statement ok
GRANT ALL ON DATABASE a TO readwrite

query TTTT colnames
SHOW GRANTS ON DATABASE a
----
database_name  schema_name         grantee    privilege_type
a              crdb_internal       admin      ALL
a              crdb_internal       readwrite  ALL
a              crdb_internal       root       ALL
a              information_schema  admin      ALL
a              information_schema  readwrite  ALL
a              information_schema  root       ALL
a              pg_catalog          admin      ALL
a              pg_catalog          readwrite  ALL
a              pg_catalog          root       ALL
a              public              admin      ALL
a              public              readwrite  ALL
a              public              root       ALL

# Show that by default GRANT is restricted to the current database
query TTTTT colnames
SHOW GRANTS
----
database_name  schema_name         table_name                         grantee  privilege_type
test           crdb_internal       NULL                               admin    ALL
test           crdb_internal       NULL                               root     ALL
test           crdb_internal       backward_dependencies              public   SELECT
test           crdb_internal       builtin_functions                  public   SELECT
test           crdb_internal       cluster_queries                    public   SELECT
test           crdb_internal       cluster_sessions                   public   SELECT
test           crdb_internal       cluster_settings                   public   SELECT
test           crdb_internal       create_statements                  public   SELECT
test           crdb_internal       forward_dependencies               public   SELECT
test           crdb_internal       gossip_alerts                      public   SELECT
test           crdb_internal       gossip_liveness                    public   SELECT
test           crdb_internal       gossip_network                     public   SELECT
test           crdb_internal       gossip_nodes                       public   SELECT
test           crdb_internal       index_columns                      public   SELECT
test           crdb_internal       jobs                               public   SELECT
test           crdb_internal       kv_node_status                     public   SELECT
test           crdb_internal       kv_store_status                    public   SELECT
test           crdb_internal       leases                             public   SELECT
test           crdb_internal       node_build_info                    public   SELECT
test           crdb_internal       node_metrics                       public   SELECT
test           crdb_internal       node_queries                       public   SELECT
test           crdb_internal       node_runtime_info                  public   SELECT
test           crdb_internal       node_sessions                      public   SELECT
test           crdb_internal       node_statement_statistics          public   SELECT
test           crdb_internal       partitions                         public   SELECT
test           crdb_internal       ranges                             public   SELECT
test           crdb_internal       schema_changes                     public   SELECT
test           crdb_internal       session_trace                      public   SELECT
test           crdb_internal       session_variables                  public   SELECT
test           crdb_internal       table_columns                      public   SELECT
test           crdb_internal       table_indexes                      public   SELECT
test           crdb_internal       tables                             public   SELECT
test           crdb_internal       zones                              public   SELECT
test           information_schema  NULL                               admin    ALL
test           information_schema  NULL                               root     ALL
test           information_schema  administrable_role_authorizations  public   SELECT
test           information_schema  applicable_roles                   public   SELECT
test           information_schema  column_privileges                  public   SELECT
test           information_schema  columns                            public   SELECT
test           information_schema  constraint_column_usage            public   SELECT
test           information_schema  enabled_roles                      public   SELECT
test           information_schema  key_column_usage                   public   SELECT
test           information_schema  parameters                         public   SELECT
test           information_schema  referential_constraints            public   SELECT
test           information_schema  role_table_grants                  public   SELECT
test           information_schema  routines                           public   SELECT
test           information_schema  schema_privileges                  public   SELECT
test           information_schema  schemata                           public   SELECT
test           information_schema  sequences                          public   SELECT
test           information_schema  statistics                         public   SELECT
test           information_schema  table_constraints                  public   SELECT
test           information_schema  table_privileges                   public   SELECT
test           information_schema  tables                             public   SELECT
test           information_schema  user_privileges                    public   SELECT
test           information_schema  views                              public   SELECT
test           pg_catalog          NULL                               admin    ALL
test           pg_catalog          NULL                               root     ALL
test           pg_catalog          pg_am                              public   SELECT
test           pg_catalog          pg_attrdef                         public   SELECT
test           pg_catalog          pg_attribute                       public   SELECT
test           pg_catalog          pg_auth_members                    public   SELECT
test           pg_catalog          pg_class                           public   SELECT
test           pg_catalog          pg_collation                       public   SELECT
test           pg_catalog          pg_constraint                      public   SELECT
test           pg_catalog          pg_database                        public   SELECT
test           pg_catalog          pg_depend                          public   SELECT
test           pg_catalog          pg_description                     public   SELECT
test           pg_catalog          pg_enum                            public   SELECT
test           pg_catalog          pg_extension                       public   SELECT
test           pg_catalog          pg_foreign_data_wrapper            public   SELECT
test           pg_catalog          pg_foreign_server                  public   SELECT
test           pg_catalog          pg_foreign_table                   public   SELECT
test           pg_catalog          pg_index                           public   SELECT
test           pg_catalog          pg_indexes                         public   SELECT
test           pg_catalog          pg_inherits                        public   SELECT
test           pg_catalog          pg_language                        public   SELECT
test           pg_catalog          pg_namespace                       public   SELECT
test           pg_catalog          pg_operator                        public   SELECT
test           pg_catalog          pg_proc                            public   SELECT
test           pg_catalog          pg_range                           public   SELECT
test           pg_catalog          pg_rewrite                         public   SELECT
test           pg_catalog          pg_roles                           public   SELECT
test           pg_catalog          pg_seclabel                        public   SELECT
test           pg_catalog          pg_sequence                        public   SELECT
test           pg_catalog          pg_settings                        public   SELECT
test           pg_catalog          pg_shdescription                   public   SELECT
test           pg_catalog          pg_shseclabel                      public   SELECT
test           pg_catalog          pg_stat_activity                   public   SELECT
test           pg_catalog          pg_tables                          public   SELECT
test           pg_catalog          pg_tablespace                      public   SELECT
test           pg_catalog          pg_trigger                         public   SELECT
test           pg_catalog          pg_type                            public   SELECT
test           pg_catalog          pg_user                            public   SELECT
test           pg_catalog          pg_user_mapping                    public   SELECT
test           pg_catalog          pg_views                           public   SELECT
test           public              NULL                               admin    ALL
test           public              NULL                               root     ALL

query TTTTT colnames
SHOW GRANTS FOR root
----
database_name  schema_name         table_name  grantee  privilege_type
test           crdb_internal       NULL        root     ALL
test           information_schema  NULL        root     ALL
test           pg_catalog          NULL        root     ALL
test           public              NULL        root     ALL

# With no database set, we show the grants everywhere
statement ok
SET DATABASE = ''

query TTTTT colnames
SELECT * FROM [SHOW GRANTS]
 WHERE schema_name NOT IN ('crdb_internal', 'pg_catalog', 'information_schema')
----
database_name  schema_name  table_name        grantee    privilege_type
a              public       NULL              admin      ALL
a              public       NULL              readwrite  ALL
a              public       NULL              root       ALL
defaultdb      public       NULL              admin      ALL
defaultdb      public       NULL              root       ALL
postgres       public       NULL              admin      ALL
postgres       public       NULL              root       ALL
system         public       NULL              admin      GRANT
system         public       NULL              admin      SELECT
system         public       NULL              root       GRANT
system         public       NULL              root       SELECT
system         public       descriptor        admin      GRANT
system         public       descriptor        admin      SELECT
system         public       descriptor        root       GRANT
system         public       descriptor        root       SELECT
system         public       eventlog          admin      DELETE
system         public       eventlog          admin      GRANT
system         public       eventlog          admin      INSERT
system         public       eventlog          admin      SELECT
system         public       eventlog          admin      UPDATE
system         public       eventlog          root       DELETE
system         public       eventlog          root       GRANT
system         public       eventlog          root       INSERT
system         public       eventlog          root       SELECT
system         public       eventlog          root       UPDATE
system         public       jobs              admin      DELETE
system         public       jobs              admin      GRANT
system         public       jobs              admin      INSERT
system         public       jobs              admin      SELECT
system         public       jobs              admin      UPDATE
system         public       jobs              root       DELETE
system         public       jobs              root       GRANT
system         public       jobs              root       INSERT
system         public       jobs              root       SELECT
system         public       jobs              root       UPDATE
system         public       lease             admin      DELETE
system         public       lease             admin      GRANT
system         public       lease             admin      INSERT
system         public       lease             admin      SELECT
system         public       lease             admin      UPDATE
system         public       lease             root       DELETE
system         public       lease             root       GRANT
system         public       lease             root       INSERT
system         public       lease             root       SELECT
system         public       lease             root       UPDATE
system         public       locations         admin      DELETE
system         public       locations         admin      GRANT
system         public       locations         admin      INSERT
system         public       locations         admin      SELECT
system         public       locations         admin      UPDATE
system         public       locations         root       DELETE
system         public       locations         root       GRANT
system         public       locations         root       INSERT
system         public       locations         root       SELECT
system         public       locations         root       UPDATE
system         public       namespace         admin      GRANT
system         public       namespace         admin      SELECT
system         public       namespace         root       GRANT
system         public       namespace         root       SELECT
system         public       rangelog          admin      DELETE
system         public       rangelog          admin      GRANT
system         public       rangelog          admin      INSERT
system         public       rangelog          admin      SELECT
system         public       rangelog          admin      UPDATE
system         public       rangelog          root       DELETE
system         public       rangelog          root       GRANT
system         public       rangelog          root       INSERT
system         public       rangelog          root       SELECT
system         public       rangelog          root       UPDATE
system         public       role_members      admin      DELETE
system         public       role_members      admin      GRANT
system         public       role_members      admin      INSERT
system         public       role_members      admin      SELECT
system         public       role_members      admin      UPDATE
system         public       role_members      root       DELETE
system         public       role_members      root       GRANT
system         public       role_members      root       INSERT
system         public       role_members      root       SELECT
system         public       role_members      root       UPDATE
system         public       settings          admin      DELETE
system         public       settings          admin      GRANT
system         public       settings          admin      INSERT
system         public       settings          admin      SELECT
system         public       settings          admin      UPDATE
system         public       settings          root       DELETE
system         public       settings          root       GRANT
system         public       settings          root       INSERT
system         public       settings          root       SELECT
system         public       settings          root       UPDATE
system         public       table_statistics  admin      DELETE
system         public       table_statistics  admin      GRANT
system         public       table_statistics  admin      INSERT
system         public       table_statistics  admin      SELECT
system         public       table_statistics  admin      UPDATE
system         public       table_statistics  root       DELETE
system         public       table_statistics  root       GRANT
system         public       table_statistics  root       INSERT
system         public       table_statistics  root       SELECT
system         public       table_statistics  root       UPDATE
system         public       ui                admin      DELETE
system         public       ui                admin      GRANT
system         public       ui                admin      INSERT
system         public       ui                admin      SELECT
system         public       ui                admin      UPDATE
system         public       ui                root       DELETE
system         public       ui                root       GRANT
system         public       ui                root       INSERT
system         public       ui                root       SELECT
system         public       ui                root       UPDATE
system         public       users             admin      DELETE
system         public       users             admin      GRANT
system         public       users             admin      INSERT
system         public       users             admin      SELECT
system         public       users             admin      UPDATE
system         public       users             root       DELETE
system         public       users             root       GRANT
system         public       users             root       INSERT
system         public       users             root       SELECT
system         public       users             root       UPDATE
system         public       web_sessions      admin      DELETE
system         public       web_sessions      admin      GRANT
system         public       web_sessions      admin      INSERT
system         public       web_sessions      admin      SELECT
system         public       web_sessions      admin      UPDATE
system         public       web_sessions      root       DELETE
system         public       web_sessions      root       GRANT
system         public       web_sessions      root       INSERT
system         public       web_sessions      root       SELECT
system         public       web_sessions      root       UPDATE
system         public       zones             admin      DELETE
system         public       zones             admin      GRANT
system         public       zones             admin      INSERT
system         public       zones             admin      SELECT
system         public       zones             admin      UPDATE
system         public       zones             root       DELETE
system         public       zones             root       GRANT
system         public       zones             root       INSERT
system         public       zones             root       SELECT
system         public       zones             root       UPDATE
test           public       NULL              admin      ALL
test           public       NULL              root       ALL

query TTTTT colnames
SHOW GRANTS FOR root
----
database_name  schema_name         table_name        grantee  privilege_type
a              crdb_internal       NULL              root     ALL
a              information_schema  NULL              root     ALL
a              pg_catalog          NULL              root     ALL
a              public              NULL              root     ALL
defaultdb      crdb_internal       NULL              root     ALL
defaultdb      information_schema  NULL              root     ALL
defaultdb      pg_catalog          NULL              root     ALL
defaultdb      public              NULL              root     ALL
postgres       crdb_internal       NULL              root     ALL
postgres       information_schema  NULL              root     ALL
postgres       pg_catalog          NULL              root     ALL
postgres       public              NULL              root     ALL
system         crdb_internal       NULL              root     GRANT
system         crdb_internal       NULL              root     SELECT
system         information_schema  NULL              root     GRANT
system         information_schema  NULL              root     SELECT
system         pg_catalog          NULL              root     GRANT
system         pg_catalog          NULL              root     SELECT
system         public              NULL              root     GRANT
system         public              NULL              root     SELECT
system         public              descriptor        root     GRANT
system         public              descriptor        root     SELECT
system         public              eventlog          root     DELETE
system         public              eventlog          root     GRANT
system         public              eventlog          root     INSERT
system         public              eventlog          root     SELECT
system         public              eventlog          root     UPDATE
system         public              jobs              root     DELETE
system         public              jobs              root     GRANT
system         public              jobs              root     INSERT
system         public              jobs              root     SELECT
system         public              jobs              root     UPDATE
system         public              lease             root     DELETE
system         public              lease             root     GRANT
system         public              lease             root     INSERT
system         public              lease             root     SELECT
system         public              lease             root     UPDATE
system         public              locations         root     DELETE
system         public              locations         root     GRANT
system         public              locations         root     INSERT
system         public              locations         root     SELECT
system         public              locations         root     UPDATE
system         public              namespace         root     GRANT
system         public              namespace         root     SELECT
system         public              rangelog          root     DELETE
system         public              rangelog          root     GRANT
system         public              rangelog          root     INSERT
system         public              rangelog          root     SELECT
system         public              rangelog          root     UPDATE
system         public              role_members      root     DELETE
system         public              role_members      root     GRANT
system         public              role_members      root     INSERT
system         public              role_members      root     SELECT
system         public              role_members      root     UPDATE
system         public              settings          root     DELETE
system         public              settings          root     GRANT
system         public              settings          root     INSERT
system         public              settings          root     SELECT
system         public              settings          root     UPDATE
system         public              table_statistics  root     DELETE
system         public              table_statistics  root     GRANT
system         public              table_statistics  root     INSERT
system         public              table_statistics  root     SELECT
system         public              table_statistics  root     UPDATE
system         public              ui                root     DELETE
system         public              ui                root     GRANT
system         public              ui                root     INSERT
system         public              ui                root     SELECT
system         public              ui                root     UPDATE
system         public              users             root     DELETE
system         public              users             root     GRANT
system         public              users             root     INSERT
system         public              users             root     SELECT
system         public              users             root     UPDATE
system         public              web_sessions      root     DELETE
system         public              web_sessions      root     GRANT
system         public              web_sessions      root     INSERT
system         public              web_sessions      root     SELECT
system         public              web_sessions      root     UPDATE
system         public              zones             root     DELETE
system         public              zones             root     GRANT
system         public              zones             root     INSERT
system         public              zones             root     SELECT
system         public              zones             root     UPDATE
test           crdb_internal       NULL              root     ALL
test           information_schema  NULL              root     ALL
test           pg_catalog          NULL              root     ALL
test           public              NULL              root     ALL

statement error pgcode 42P01 relation "a.t" does not exist
SHOW GRANTS ON a.t

statement error pgcode 42P01 relation "t" does not exist
SHOW GRANTS ON t

statement ok
SET DATABASE = a

statement error pgcode 42P01 relation "t" does not exist
SHOW GRANTS ON t

statement error pgcode 42P01 relation "a.t" does not exist
GRANT ALL ON a.t TO readwrite

statement ok
CREATE TABLE t (id INT PRIMARY KEY)

query TTTTT colnames
SHOW GRANTS ON t
----
database_name  schema_name  table_name  grantee    privilege_type
a              public       t           admin      ALL
a              public       t           readwrite  ALL
a              public       t           root       ALL

query TTTTT colnames
SHOW GRANTS ON a.t
----
database_name  schema_name  table_name  grantee    privilege_type
a              public       t           admin      ALL
a              public       t           readwrite  ALL
a              public       t           root       ALL

statement ok
INSERT INTO system.users VALUES('test-user','');

statement ok
GRANT ALL ON t TO readwrite, "test-user"

query TTTTT
SHOW GRANTS ON t
----
a  public  t  admin      ALL
a  public  t  readwrite  ALL
a  public  t  root       ALL
a  public  t  test-user  ALL

query TTTTT
SHOW GRANTS ON t FOR readwrite, "test-user"
----
a  public  t  readwrite  ALL
a  public  t  test-user  ALL

statement ok
REVOKE INSERT,DELETE ON t FROM "test-user",readwrite

query TTTTT
SHOW GRANTS ON t
----
a  public  t  admin      ALL
a  public  t  readwrite  CREATE
a  public  t  readwrite  DROP
a  public  t  readwrite  GRANT
a  public  t  readwrite  SELECT
a  public  t  readwrite  UPDATE
a  public  t  root       ALL
a  public  t  test-user  CREATE
a  public  t  test-user  DROP
a  public  t  test-user  GRANT
a  public  t  test-user  SELECT
a  public  t  test-user  UPDATE

query TTTTT
SHOW GRANTS ON t FOR readwrite, "test-user"
----
a  public  t  readwrite  CREATE
a  public  t  readwrite  DROP
a  public  t  readwrite  GRANT
a  public  t  readwrite  SELECT
a  public  t  readwrite  UPDATE
a  public  t  test-user  CREATE
a  public  t  test-user  DROP
a  public  t  test-user  GRANT
a  public  t  test-user  SELECT
a  public  t  test-user  UPDATE

statement ok
REVOKE SELECT ON t FROM "test-user"

query TTTTT
SHOW GRANTS ON t
----
a  public  t  admin      ALL
a  public  t  readwrite  CREATE
a  public  t  readwrite  DROP
a  public  t  readwrite  GRANT
a  public  t  readwrite  SELECT
a  public  t  readwrite  UPDATE
a  public  t  root       ALL
a  public  t  test-user  CREATE
a  public  t  test-user  DROP
a  public  t  test-user  GRANT
a  public  t  test-user  UPDATE

query TTTTT
SHOW GRANTS ON t FOR readwrite, "test-user"
----
a  public  t  readwrite  CREATE
a  public  t  readwrite  DROP
a  public  t  readwrite  GRANT
a  public  t  readwrite  SELECT
a  public  t  readwrite  UPDATE
a  public  t  test-user  CREATE
a  public  t  test-user  DROP
a  public  t  test-user  GRANT
a  public  t  test-user  UPDATE

statement ok
REVOKE ALL ON t FROM readwrite,"test-user"

query TTTTT
SHOW GRANTS ON t
----
a  public  t  admin  ALL
a  public  t  root   ALL

query TTTTT
SHOW GRANTS ON t FOR readwrite, "test-user"
----

# The same as above, but on a view

statement ok
CREATE VIEW v as SELECT id FROM t

query TTTTT colnames
SHOW GRANTS ON v
----
database_name  schema_name  table_name  grantee    privilege_type
a              public       v           admin      ALL
a              public       v           readwrite  ALL
a              public       v           root       ALL

query TTTTT colnames
SHOW GRANTS ON a.v
----
database_name  schema_name  table_name  grantee    privilege_type
a              public       v           admin      ALL
a              public       v           readwrite  ALL
a              public       v           root       ALL

statement ok
GRANT ALL ON v TO readwrite, "test-user"

query TTTTT
SHOW GRANTS ON v
----
a  public  v  admin      ALL
a  public  v  readwrite  ALL
a  public  v  root       ALL
a  public  v  test-user  ALL

query TTTTT
SHOW GRANTS ON v FOR readwrite, "test-user"
----
a  public  v  readwrite  ALL
a  public  v  test-user  ALL

statement ok
REVOKE INSERT,DELETE ON v FROM "test-user",readwrite

query TTTTT
SHOW GRANTS ON v
----
a  public  v  admin      ALL
a  public  v  readwrite  CREATE
a  public  v  readwrite  DROP
a  public  v  readwrite  GRANT
a  public  v  readwrite  SELECT
a  public  v  readwrite  UPDATE
a  public  v  root       ALL
a  public  v  test-user  CREATE
a  public  v  test-user  DROP
a  public  v  test-user  GRANT
a  public  v  test-user  SELECT
a  public  v  test-user  UPDATE

query TTTTT
SHOW GRANTS ON v FOR readwrite, "test-user"
----
a  public  v  readwrite  CREATE
a  public  v  readwrite  DROP
a  public  v  readwrite  GRANT
a  public  v  readwrite  SELECT
a  public  v  readwrite  UPDATE
a  public  v  test-user  CREATE
a  public  v  test-user  DROP
a  public  v  test-user  GRANT
a  public  v  test-user  SELECT
a  public  v  test-user  UPDATE

statement ok
REVOKE SELECT ON v FROM "test-user"

query TTTTT
SHOW GRANTS ON v
----
a  public  v  admin      ALL
a  public  v  readwrite  CREATE
a  public  v  readwrite  DROP
a  public  v  readwrite  GRANT
a  public  v  readwrite  SELECT
a  public  v  readwrite  UPDATE
a  public  v  root       ALL
a  public  v  test-user  CREATE
a  public  v  test-user  DROP
a  public  v  test-user  GRANT
a  public  v  test-user  UPDATE

query TTTTT
SHOW GRANTS ON v FOR readwrite, "test-user"
----
a  public  v  readwrite  CREATE
a  public  v  readwrite  DROP
a  public  v  readwrite  GRANT
a  public  v  readwrite  SELECT
a  public  v  readwrite  UPDATE
a  public  v  test-user  CREATE
a  public  v  test-user  DROP
a  public  v  test-user  GRANT
a  public  v  test-user  UPDATE

query TTTTT
SHOW GRANTS FOR readwrite, "test-user"
----
a  crdb_internal       NULL  readwrite  ALL
a  information_schema  NULL  readwrite  ALL
a  pg_catalog          NULL  readwrite  ALL
a  public              NULL  readwrite  ALL
a  public              v     readwrite  CREATE
a  public              v     readwrite  DROP
a  public              v     readwrite  GRANT
a  public              v     readwrite  SELECT
a  public              v     readwrite  UPDATE
a  public              v     test-user  CREATE
a  public              v     test-user  DROP
a  public              v     test-user  GRANT
a  public              v     test-user  UPDATE

statement ok
REVOKE ALL ON v FROM readwrite,"test-user"

query TTTTT
SHOW GRANTS ON v
----
a  public  v  admin  ALL
a  public  v  root   ALL

query TTTTT
SHOW GRANTS ON v FOR readwrite, "test-user"
----

query TTTTT
SHOW GRANTS FOR readwrite, "test-user"
----
a  crdb_internal       NULL  readwrite  ALL
a  information_schema  NULL  readwrite  ALL
a  pg_catalog          NULL  readwrite  ALL
a  public              NULL  readwrite  ALL

# Verify that the DB privileges have not changed.
query TTTT colnames
SHOW GRANTS ON DATABASE a
----
database_name  schema_name         grantee    privilege_type
a              crdb_internal       admin      ALL
a              crdb_internal       readwrite  ALL
a              crdb_internal       root       ALL
a              information_schema  admin      ALL
a              information_schema  readwrite  ALL
a              information_schema  root       ALL
a              pg_catalog          admin      ALL
a              pg_catalog          readwrite  ALL
a              pg_catalog          root       ALL
a              public              admin      ALL
a              public              readwrite  ALL
a              public              root       ALL


# Errors due to invalid targets.
statement ok
SET DATABASE = ""

statement error pq: syntax error at or near "@"
GRANT ALL ON a.t@xyz TO readwrite

statement error pq: "\*" does not match any valid database or schema
GRANT ALL ON * TO readwrite

statement error pgcode 42P01 relation "a.tt" does not exist
GRANT ALL ON a.t, a.tt TO readwrite

# '*' doesn't work for databases.
statement error pq: syntax error at or near "*"
GRANT ALL ON DATABASE * TO readwrite

statement ok
CREATE DATABASE b

statement ok
CREATE TABLE b.t (id INT PRIMARY KEY)

statement ok
CREATE TABLE b.t2 (id INT PRIMARY KEY)

statement ok
CREATE DATABASE c

statement ok
CREATE TABLE c.t (id INT PRIMARY KEY)

# `*` works after you've set a database
statement ok
SET DATABASE = "b"

statement error pq: user or role vanilli does not exist
GRANT ALL ON * TO Vanilli

statement ok
CREATE USER Vanilli

statement ok
GRANT ALL ON * TO Vanilli

query TTTTT colnames
SHOW GRANTS ON *
----
database_name  schema_name  table_name  grantee  privilege_type
b              public       t           admin    ALL
b              public       t           root     ALL
b              public       t           vanilli  ALL
b              public       t2          admin    ALL
b              public       t2          root     ALL
b              public       t2          vanilli  ALL


# Multiple targets.
statement ok
CREATE USER Millie

statement ok
GRANT ALL ON c.*, b.t TO Millie

query TTTTT colnames
SHOW GRANTS ON b.*
----
database_name  schema_name  table_name  grantee  privilege_type
b              public       t           admin    ALL
b              public       t           millie   ALL
b              public       t           root     ALL
b              public       t           vanilli  ALL
b              public       t2          admin    ALL
b              public       t2          root     ALL
b              public       t2          vanilli  ALL

query TTTTT colnames
SHOW GRANTS ON a.*, b.*
----
database_name  schema_name  table_name  grantee  privilege_type
a              public       t           admin    ALL
a              public       t           root     ALL
a              public       v           admin    ALL
a              public       v           root     ALL
b              public       t           admin    ALL
b              public       t           millie   ALL
b              public       t           root     ALL
b              public       t           vanilli  ALL
b              public       t2          admin    ALL
b              public       t2          root     ALL
b              public       t2          vanilli  ALL

query TTTTT colnames
SHOW GRANTS ON c.t
----
database_name  schema_name  table_name  grantee  privilege_type
c              public       t           admin    ALL
c              public       t           millie   ALL
c              public       t           root     ALL

statement ok
REVOKE ALL ON *, c.* FROM Vanilli

query TTTTT colnames
SHOW GRANTS ON b.*
----
database_name  schema_name  table_name  grantee  privilege_type
b              public       t           admin    ALL
b              public       t           millie   ALL
b              public       t           root     ALL
b              public       t2          admin    ALL
b              public       t2          root     ALL

statement ok
CREATE DATABASE empty

query TTTTT colnames
SHOW GRANTS ON empty.*
----
database_name  schema_name  table_name  grantee  privilege_type

query TTTTT colnames
SHOW GRANTS ON empty.*, b.*
----
database_name  schema_name  table_name  grantee  privilege_type
b              public       t           admin    ALL
b              public       t           millie   ALL
b              public       t           root     ALL
b              public       t2          admin    ALL
b              public       t2          root     ALL
