From 8b2b8c2b7ab7a731bab479afff778afbda3f0b9c Mon Sep 17 00:00:00 2001 From: David Fetter Date: Sat, 28 Jul 2018 13:33:46 -0700 Subject: [PATCH] Show that "all privileges revoked" is a distinct state from default To: pgsql-hackers@postgresql.org --- src/bin/psql/describe.c | 8 ++++---- src/test/regress/expected/psql.out | 18 ++++++++++++++++++ src/test/regress/sql/psql.sql | 7 +++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 80d8338b96..711e94c023 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -5560,10 +5560,10 @@ printACLColumn(PQExpBuffer buf, const char *colname) { if (pset.sversion >= 80100) appendPQExpBuffer(buf, - "pg_catalog.array_to_string(%s, E'\\n') AS \"%s\"", - colname, gettext_noop("Access privileges")); + "CASE pg_catalog.array_upper(%s,1) WHEN 0 THEN 'No privileges' ELSE pg_catalog.array_to_string(%s, E'\\n') END AS \"%s\"", + colname, colname, gettext_noop("Access privileges")); else appendPQExpBuffer(buf, - "pg_catalog.array_to_string(%s, '\\n') AS \"%s\"", - colname, gettext_noop("Access privileges")); + "CASE pg_catalog.array_upper(%s,1) WHEN 0 THEN 'No privileges' ELSE pg_catalog.array_to_string(%s, '\\n') END AS \"%s\"", + colname, colname, gettext_noop("Access privileges")); } diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out index 3818cfea7e..809ca27191 100644 --- a/src/test/regress/expected/psql.out +++ b/src/test/regress/expected/psql.out @@ -3243,3 +3243,21 @@ last error message: division by zero \echo 'last error code:' :LAST_ERROR_SQLSTATE last error code: 22012 \unset FETCH_COUNT +-- show when a user has no permissions on a table +CREATE TABLE no_permissions_test(f1 int); +\dp no_permissions_test; + Access privileges + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+---------------------+-------+-------------------+-------------------+---------- + public | no_permissions_test | table | | | +(1 row) + +REVOKE ALL ON TABLE no_permissions_test FROM CURRENT_USER; +\dp no_permissions_test; + Access privileges + Schema | Name | Type | Access privileges | Column privileges | Policies +--------+---------------------+-------+-------------------+-------------------+---------- + public | no_permissions_test | table | No privileges | | +(1 row) + +DROP TABLE no_permissions_test; diff --git a/src/test/regress/sql/psql.sql b/src/test/regress/sql/psql.sql index b45da9bb8d..68a2fb06ce 100644 --- a/src/test/regress/sql/psql.sql +++ b/src/test/regress/sql/psql.sql @@ -688,3 +688,10 @@ select 1/(15-unique2) from tenk1 order by unique2 limit 19; \echo 'last error code:' :LAST_ERROR_SQLSTATE \unset FETCH_COUNT + +-- show when a user has no permissions on a table +CREATE TABLE no_permissions_test(f1 int); +\dp no_permissions_test; +REVOKE ALL ON TABLE no_permissions_test FROM CURRENT_USER; +\dp no_permissions_test; +DROP TABLE no_permissions_test; -- 2.17.1