From 4a28724b37fde5a40700190dc83b34e56a6f3751 Mon Sep 17 00:00:00 2001 From: Shihao Date: Sun, 20 Sep 2026 14:20:23 -0400 Subject: [PATCH v1 2/2] Add tests for sequence USAGE privileges in information_schema Covers both sides, a sequence with no explicit grants, where the owner row comes from acldefault, and one with a grant, where it comes from relacl. --- src/test/regress/expected/privileges.out | 21 +++++++++++++++++++++ src/test/regress/sql/privileges.sql | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 9b7153c9cd5..703bb5126aa 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -2067,7 +2067,28 @@ REVOKE regress_priv_group2 FROM regress_priv_user5; -- has_sequence_privilege tests \c - CREATE SEQUENCE x_seq; +-- information_schema.usage_privileges must show the owner's implicit USAGE +-- privilege on a sequence, even when nothing has been granted explicitly +SELECT grantee = current_user AS grantee_is_owner, privilege_type, is_grantable + FROM information_schema.usage_privileges + WHERE object_name = 'x_seq' AND object_type = 'SEQUENCE' + ORDER BY 1; + grantee_is_owner | privilege_type | is_grantable +------------------+----------------+-------------- + t | USAGE | YES +(1 row) + GRANT USAGE on x_seq to regress_priv_user2; +SELECT grantee = current_user AS grantee_is_owner, privilege_type, is_grantable + FROM information_schema.usage_privileges + WHERE object_name = 'x_seq' AND object_type = 'SEQUENCE' + ORDER BY 1; + grantee_is_owner | privilege_type | is_grantable +------------------+----------------+-------------- + f | USAGE | NO + t | USAGE | YES +(2 rows) + SELECT has_sequence_privilege('regress_priv_user1', 'atest1', 'SELECT'); ERROR: "atest1" is not a sequence SELECT has_sequence_privilege('regress_priv_user1', 'x_seq', 'INSERT'); diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 0113dfa5dab..bb9e6e636b5 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -1370,8 +1370,20 @@ REVOKE regress_priv_group2 FROM regress_priv_user5; CREATE SEQUENCE x_seq; +-- information_schema.usage_privileges must show the owner's implicit USAGE +-- privilege on a sequence, even when nothing has been granted explicitly +SELECT grantee = current_user AS grantee_is_owner, privilege_type, is_grantable + FROM information_schema.usage_privileges + WHERE object_name = 'x_seq' AND object_type = 'SEQUENCE' + ORDER BY 1; + GRANT USAGE on x_seq to regress_priv_user2; +SELECT grantee = current_user AS grantee_is_owner, privilege_type, is_grantable + FROM information_schema.usage_privileges + WHERE object_name = 'x_seq' AND object_type = 'SEQUENCE' + ORDER BY 1; + SELECT has_sequence_privilege('regress_priv_user1', 'atest1', 'SELECT'); SELECT has_sequence_privilege('regress_priv_user1', 'x_seq', 'INSERT'); SELECT has_sequence_privilege('regress_priv_user1', 'x_seq', 'SELECT'); -- 2.37.1 (Apple Git-137.1)