aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tcop/utility.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r--src/backend/tcop/utility.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index d1d670228ff..771f3d30cc8 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.151 2002/04/24 02:48:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.152 2002/04/27 03:45:03 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -124,9 +124,10 @@ CheckDropPermissions(RangeVar *rel, char rightkind)
if (classform->relkind != rightkind)
DropErrorMsg(rel->relname, classform->relkind, rightkind);
- if (!pg_class_ownercheck(relOid, GetUserId()))
- elog(ERROR, "you do not own %s \"%s\"",
- rentry->name, rel->relname);
+ /* Allow DROP to either table owner or schema owner */
+ if (!pg_class_ownercheck(relOid, GetUserId()) &&
+ !pg_namespace_ownercheck(classform->relnamespace, GetUserId()))
+ aclcheck_error(ACLCHECK_NOT_OWNER, rel->relname);
if (!allowSystemTableMods && IsSystemClass(classform))
elog(ERROR, "%s \"%s\" is a system %s",
@@ -149,8 +150,7 @@ CheckOwnership(RangeVar *rel, bool noCatalogs)
elog(ERROR, "Relation \"%s\" does not exist", rel->relname);
if (!pg_class_ownercheck(relOid, GetUserId()))
- elog(ERROR, "%s: %s", rel->relname,
- aclcheck_error_strings[ACLCHECK_NOT_OWNER]);
+ aclcheck_error(ACLCHECK_NOT_OWNER, rel->relname);
if (noCatalogs)
{