More cleanups for the recent large object permissions patch.
authorRobert Haas <rhaas@postgresql.org>
Mon, 21 Dec 2009 01:34:11 +0000 (01:34 +0000)
committerRobert Haas <rhaas@postgresql.org>
Mon, 21 Dec 2009 01:34:11 +0000 (01:34 +0000)
Rewrite or adjust various comments for clarity.  Remove one bogus comment that
doesn't reflect what the code actually does.  Improve the description of the
lo_compat_privileges option.

src/backend/catalog/aclchk.c
src/backend/catalog/pg_largeobject.c
src/backend/commands/comment.c
src/backend/utils/adt/acl.c
src/backend/utils/misc/guc.c

index 3c2fdb0cf14556c9fb98195b68815f1e558c16ca..84dc2c5f4ae06304b5c7ffeb406fcaa581c8c94a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.157 2009/12/11 03:34:55 itagaki Exp $
+ *   $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.158 2009/12/21 01:34:10 rhaas Exp $
  *
  * NOTES
  *   See acl.h.
@@ -4261,9 +4261,8 @@ pg_language_ownercheck(Oid lan_oid, Oid roleid)
 /*
  * Ownership check for a largeobject (specified by OID)
  *
- * Note that we have no candidate to call this routine with a certain
- * snapshot except for SnapshotNow, so we don't provide an interface
- * with _snapshot() version now.
+ * This is only used for operations like ALTER LARGE OBJECT that are always
+ * relative to SnapshotNow.
  */
 bool
 pg_largeobject_ownercheck(Oid lobj_oid, Oid roleid)
index 517a0f3932ece4e5b0d2d9d7b6666eb290291b81..db2c44fc4c1c6480ef8ccabecc5257cc4ab342f0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/catalog/pg_largeobject.c,v 1.34 2009/12/11 03:34:55 itagaki Exp $
+ *   $PostgreSQL: pgsql/src/backend/catalog/pg_largeobject.c,v 1.35 2009/12/21 01:34:10 rhaas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -79,10 +79,8 @@ LargeObjectCreate(Oid loid)
 }
 
 /*
- * Drop a large object having the given LO identifier.
- *
- * When we drop a large object, it is necessary to drop both of metadata
- * and data pages in same time.
+ * Drop a large object having the given LO identifier.  Both the data pages
+ * and metadata must be dropped.
  */
 void
 LargeObjectDrop(Oid loid)
@@ -191,13 +189,12 @@ LargeObjectAlterOwner(Oid loid, Oid newOwnerId)
        if (!superuser())
        {
            /*
-            * The 'lo_compat_privileges' is not checked here, because we
-            * don't have any access control features in the 8.4.x series
-            * or earlier release.
-            * So, it is not a place we can define a compatible behavior.
+            * lo_compat_privileges is not checked here, because ALTER
+            * LARGE OBJECT ... OWNER did not exist at all prior to
+            * PostgreSQL 8.5.
+            *
+            * We must be the owner of the existing object.
             */
-
-           /* Otherwise, must be owner of the existing object */
            if (!pg_largeobject_ownercheck(loid, GetUserId()))
                ereport(ERROR,
                        (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
@@ -251,9 +248,8 @@ LargeObjectAlterOwner(Oid loid, Oid newOwnerId)
 /*
  * LargeObjectExists
  *
- * Currently, we don't use system cache to contain metadata of
- * large objects, because massive number of large objects can
- * consume not a small amount of process local memory.
+ * We don't use the system cache to for large object metadata, for fear of
+ * using too much local memory.
  *
  * Note that LargeObjectExists always scans the system catalog
  * with SnapshotNow, so it is unavailable to use to check
index d57ea25d9ca0892eb51a57ffd54e9275ef82331d..39cc1debc1ee931e0eb05b1c16bd94f4f79a2162 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (c) 1996-2009, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.109 2009/12/11 03:34:55 itagaki Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.110 2009/12/21 01:34:11 rhaas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1449,7 +1449,7 @@ CommentLargeObject(List *qualname, char *comment)
     *
     * See the comment in the inv_create() which describes
     * the reason why LargeObjectRelationId is used instead
-    * of the LargeObjectMetadataRelationId.
+    * of LargeObjectMetadataRelationId.
     */
    CreateComments(loid, LargeObjectRelationId, 0, comment);
 }
index 31cbbe7c7609078bfd2b0f14edcb305db47bff2b..098a191c25c348bf46af372ec094e4953577b987 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.152 2009/12/11 03:34:55 itagaki Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.153 2009/12/21 01:34:11 rhaas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -765,7 +765,6 @@ acldefault(GrantObjectType objtype, Oid ownerId)
            owner_default = ACL_ALL_RIGHTS_LANGUAGE;
            break;
        case ACL_OBJECT_LARGEOBJECT:
-           /* Grant SELECT,UPDATE by default, for now */
            world_default = ACL_NO_RIGHTS;
            owner_default = ACL_ALL_RIGHTS_LARGEOBJECT;
            break;
index 0c9998614fa9062054c2cd7b521c4676ea2ea140..626983d8bd4ae8d9be03dda3afadc91ab08dcbf2 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.528 2009/12/19 01:32:37 sriggs Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.529 2009/12/21 01:34:11 rhaas Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -1243,9 +1243,9 @@ static struct config_bool ConfigureNamesBool[] =
 
    {
        {"lo_compat_privileges", PGC_SUSET, COMPAT_OPTIONS_PREVIOUS,
-           gettext_noop("Enables backward compatibility in privilege checks on large objects"),
-           gettext_noop("When turned on, privilege checks on large objects perform "
-                        "with backward compatibility as 8.4.x or earlier releases.")
+           gettext_noop("Enables backward compatibility mode for privilege checks on large objects"),
+           gettext_noop("Skips privilege checks when reading or modifying large objects, "
+                        "for compatibility with PostgreSQL releases prior to 8.5.")
        },
        &lo_compat_privileges,
        false, NULL, NULL