mirror of
https://github.com/postgres/postgres.git
synced 2025-12-24 06:01:07 +03:00
Replace AclObjectKind with ObjectType
AclObjectKind was basically just another enumeration for object types, and we already have a preferred one for that. It's only used in aclcheck_error. By using ObjectType instead, we can also give some more precise error messages, for example "index" instead of "relation". Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
This commit is contained in:
@@ -2504,7 +2504,7 @@ get_rel_from_relname(text *relname_text, LOCKMODE lockmode, AclMode aclmode)
|
||||
aclresult = pg_class_aclcheck(RelationGetRelid(rel), GetUserId(),
|
||||
aclmode);
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_CLASS,
|
||||
aclcheck_error(aclresult, get_relkind_objtype(rel->rd_rel->relkind),
|
||||
RelationGetRelationName(rel));
|
||||
|
||||
return rel;
|
||||
@@ -2789,7 +2789,7 @@ get_connect_string(const char *servername)
|
||||
/* Check permissions, user must have usage on the server. */
|
||||
aclresult = pg_foreign_server_aclcheck(serverid, userid, ACL_USAGE);
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_FOREIGN_SERVER, foreign_server->servername);
|
||||
aclcheck_error(aclresult, OBJECT_FOREIGN_SERVER, foreign_server->servername);
|
||||
|
||||
foreach(cell, fdw->options)
|
||||
{
|
||||
|
||||
@@ -393,7 +393,7 @@ SELECT * FROM agg_text ORDER BY a;
|
||||
|
||||
SET ROLE regress_no_priv_user;
|
||||
SELECT * FROM agg_text ORDER BY a; -- ERROR
|
||||
ERROR: permission denied for relation agg_text
|
||||
ERROR: permission denied for foreign table agg_text
|
||||
SET ROLE regress_file_fdw_user;
|
||||
\t on
|
||||
EXPLAIN (VERBOSE, COSTS FALSE) SELECT * FROM agg_text WHERE a > 0;
|
||||
|
||||
@@ -107,7 +107,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
|
||||
rel = relation_open(relOid, AccessShareLock);
|
||||
aclresult = pg_class_aclcheck(relOid, GetUserId(), ACL_SELECT);
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_CLASS, get_rel_name(relOid));
|
||||
aclcheck_error(aclresult, get_relkind_objtype(rel->rd_rel->relkind), get_rel_name(relOid));
|
||||
|
||||
/* Check that the fork exists. */
|
||||
RelationOpenSmgr(rel);
|
||||
|
||||
@@ -121,7 +121,7 @@ pgrowlocks(PG_FUNCTION_ARGS)
|
||||
aclresult = is_member_of_role(GetUserId(), DEFAULT_ROLE_STAT_SCAN_TABLES) ? ACLCHECK_OK : ACLCHECK_NO_PRIV;
|
||||
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_CLASS,
|
||||
aclcheck_error(aclresult, get_relkind_objtype(rel->rd_rel->relkind),
|
||||
RelationGetRelationName(rel));
|
||||
|
||||
scan = heap_beginscan(rel, GetActiveSnapshot(), 0, NULL);
|
||||
|
||||
@@ -38,7 +38,7 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_d
|
||||
(1 row)
|
||||
|
||||
INSERT INTO lr_test VALUES('lr_superuser_init');
|
||||
ERROR: permission denied for relation lr_test
|
||||
ERROR: permission denied for table lr_test
|
||||
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
||||
data
|
||||
------
|
||||
@@ -56,7 +56,7 @@ SET ROLE regress_lr_normal;
|
||||
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
|
||||
ERROR: must be superuser or replication role to use replication slots
|
||||
INSERT INTO lr_test VALUES('lr_superuser_init');
|
||||
ERROR: permission denied for relation lr_test
|
||||
ERROR: permission denied for table lr_test
|
||||
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
|
||||
ERROR: must be superuser or replication role to use replication slots
|
||||
SELECT pg_drop_replication_slot('regression_slot');
|
||||
|
||||
Reference in New Issue
Block a user