diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-04-27 03:45:03 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-04-27 03:45:03 +0000 |
commit | 31c775adeb2251a9c66328cbc9016877e5e4f085 (patch) | |
tree | 065014ccecaae449f8a1c977319e823d54364c4b /src/backend/commands/trigger.c | |
parent | aafe72efb2d9a01db77bacf94b9b103042b5eb60 (diff) | |
download | postgresql-31c775adeb2251a9c66328cbc9016877e5e4f085.tar.gz postgresql-31c775adeb2251a9c66328cbc9016877e5e4f085.zip |
Restructure aclcheck error reporting to make permission-failure
messages more uniform and internationalizable: the global array
aclcheck_error_strings[] is gone in favor of a subroutine
aclcheck_error(). Partial implementation of namespace-related
permission checks --- not all done yet.
Diffstat (limited to 'src/backend/commands/trigger.c')
-rw-r--r-- | src/backend/commands/trigger.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index b826297a718..52e9761d759 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.115 2002/04/26 19:29:47 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.116 2002/04/27 03:45:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -58,6 +58,7 @@ CreateTrigger(CreateTrigStmt *stmt) Datum values[Natts_pg_trigger]; char nulls[Natts_pg_trigger]; Relation rel; + AclResult aclresult; Relation tgrel; SysScanDesc tgscan; ScanKeyData key; @@ -84,10 +85,10 @@ CreateTrigger(CreateTrigStmt *stmt) elog(ERROR, "CreateTrigger: can't create trigger for system relation %s", stmt->relation->relname); - if (pg_class_aclcheck(RelationGetRelid(rel), GetUserId(), - stmt->isconstraint ? ACL_REFERENCES : ACL_TRIGGER) - != ACLCHECK_OK) - elog(ERROR, "permission denied"); + aclresult = pg_class_aclcheck(RelationGetRelid(rel), GetUserId(), + stmt->isconstraint ? ACL_REFERENCES : ACL_TRIGGER); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, RelationGetRelationName(rel)); /* * If trigger is an RI constraint, use trigger name as constraint name @@ -337,8 +338,7 @@ DropTrigger(Oid relid, const char *trigname) RelationGetRelationName(rel)); if (!pg_class_ownercheck(relid, GetUserId())) - elog(ERROR, "%s: %s", RelationGetRelationName(rel), - aclcheck_error_strings[ACLCHECK_NOT_OWNER]); + aclcheck_error(ACLCHECK_NOT_OWNER, RelationGetRelationName(rel)); /* * Search pg_trigger, delete target trigger, count remaining triggers |