summaryrefslogtreecommitdiff
path: root/src/backend/commands/copy.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-03-21 23:27:25 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-03-21 23:27:25 +0000
commit56c9b73c1d426c79a604df6d6f36293dd9f18754 (patch)
treee381610845e8693ec025af08f4ddc405247461d9 /src/backend/commands/copy.c
parent6137ed1b591920d919e437fbf6e2ea07de44a883 (diff)
downloadpostgresql-56c9b73c1d426c79a604df6d6f36293dd9f18754.tar.gz
Change the aclchk.c routines to uniformly use OIDs to identify the
objects to be privilege-checked. Some change in their APIs would be necessary no matter what in the schema environment, and simply getting rid of the name-based interface entirely seems like the best way.
Diffstat (limited to 'src/backend/commands/copy.c')
-rw-r--r--src/backend/commands/copy.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 541f3d0a48..fc4f80468c 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.150 2002/03/06 06:09:30 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.151 2002/03/21 23:27:20 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -266,16 +266,20 @@ DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe,
FILE *fp;
Relation rel;
const AclMode required_access = (from ? ACL_INSERT : ACL_SELECT);
- int result;
+ int32 aclresult;
/*
* Open and lock the relation, using the appropriate lock type.
*/
rel = heap_openr(relname, (from ? RowExclusiveLock : AccessShareLock));
- result = pg_aclcheck(relname, GetUserId(), required_access);
- if (result != ACLCHECK_OK)
- elog(ERROR, "%s: %s", relname, aclcheck_error_strings[result]);
+ /* Check permissions. */
+ aclresult = pg_class_aclcheck(RelationGetRelid(rel), GetUserId(),
+ required_access);
+ if (aclresult != ACLCHECK_OK)
+ elog(ERROR, "%s: %s",
+ RelationGetRelationName(rel),
+ aclcheck_error_strings[aclresult]);
if (!pipe && !superuser())
elog(ERROR, "You must have Postgres superuser privilege to do a COPY "
"directly to or from a file. Anyone can COPY to stdout or "