diff options
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 693dadc8346..065d01457cc 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.11 1997/01/16 14:56:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.12 1997/03/12 20:48:27 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -381,10 +381,13 @@ ProcessUtility(Node *parsetree, case T_RuleStmt: /* CREATE RULE */ { RuleStmt *stmt = (RuleStmt *)parsetree; + int aclcheck_result; + #ifndef NO_SECURITY relname = stmt->object->relname; - if (!pg_aclcheck(relname, userName, ACL_RU)) - elog(WARN, "%s %s", relname, ACL_NO_PRIV_WARNING); + aclcheck_result = pg_aclcheck(relname, userName, ACL_RU); + if(aclcheck_result != ACLCHECK_OK) + elog(WARN, "%s: %s", relname, aclcheck_error_strings[aclcheck_result]); #endif commandTag = "CREATE"; CHECK_IF_ABORTED(); @@ -423,19 +426,21 @@ ProcessUtility(Node *parsetree, relname); #ifndef NO_SECURITY if (!pg_ownercheck(userName, relname, RELNAME)) - elog(WARN, "you do not own class \"%s\"", - relname); + elog(WARN, "%s: %s", relationName, aclcheck_error_strings[ACLCHECK_NOT_OWNER]); #endif RemoveIndex(relname); break; case RULE: { char *rulename = stmt->name; + int aclcheck_result; #ifndef NO_SECURITY relationName = RewriteGetRuleEventRel(rulename); - if (!pg_aclcheck(relationName, userName, ACL_RU)) - elog(WARN, "%s %s", relationName, ACL_NO_PRIV_WARNING); + aclcheck_result = pg_aclcheck(relationName, userName, ACL_RU); + if(aclcheck_result != ACLCHECK_OK) { + elog(WARN, "%s: %s", relationName, aclcheck_error_strings[aclcheck_result]); + } #endif RemoveRewriteRule(rulename); } @@ -457,7 +462,7 @@ ProcessUtility(Node *parsetree, ruleName = MakeRetrieveViewRuleName(viewName); relationName = RewriteGetRuleEventRel(ruleName); if (!pg_ownercheck(userName, relationName, RELNAME)) - elog(WARN, "%s %s", relationName, ACL_NO_PRIV_WARNING); + elog(WARN, "%s: %s", relationName, aclcheck_error_strings[ACLCHECK_NOT_OWNER]); pfree(ruleName); #endif RemoveView(viewName); |