]> granicus.if.org Git - postgresql/blobdiff - src/backend/catalog/pg_db_role_setting.c
Update copyright for 2016
[postgresql] / src / backend / catalog / pg_db_role_setting.c
index d865b6875d37b01ca1b897af9536e3bafcf83c0c..9414ede96106657b5fc9096538dbd8c4e91e48eb 100644 (file)
@@ -2,7 +2,7 @@
  * pg_db_role_setting.c
  *             Routines to support manipulation of the pg_db_role_setting relation
  *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
@@ -12,7 +12,9 @@
 
 #include "access/genam.h"
 #include "access/heapam.h"
+#include "access/htup_details.h"
 #include "catalog/indexing.h"
+#include "catalog/objectaccess.h"
 #include "catalog/pg_db_role_setting.h"
 #include "utils/fmgroids.h"
 #include "utils/rel.h"
@@ -41,7 +43,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                                BTEqualStrategyNumber, F_OIDEQ,
                                ObjectIdGetDatum(roleid));
        scan = systable_beginscan(rel, DbRoleSettingDatidRolidIndexId, true,
-                                                         SnapshotNow, 2, scankey);
+                                                         NULL, 2, scankey);
        tuple = systable_getnext(scan);
 
        /*
@@ -159,6 +161,9 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                CatalogUpdateIndexes(rel, newtuple);
        }
 
+       InvokeObjectPostAlterHookArg(DbRoleSettingRelationId,
+                                                                databaseid, 0, roleid, false);
+
        systable_endscan(scan);
 
        /* Close pg_db_role_setting, but keep lock till commit */
@@ -167,7 +172,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
 
 /*
  * Drop some settings from the catalog.  These can be for a particular
- * database, or for a particular role. (It is of course possible to do both
+ * database, or for a particular role.  (It is of course possible to do both
  * too, but it doesn't make sense for current uses.)
  */
 void
@@ -200,7 +205,7 @@ DropSetting(Oid databaseid, Oid roleid)
                numkeys++;
        }
 
-       scan = heap_beginscan(relsetting, SnapshotNow, numkeys, keys);
+       scan = heap_beginscan_catalog(relsetting, numkeys, keys);
        while (HeapTupleIsValid(tup = heap_getnext(scan, ForwardScanDirection)))
        {
                simple_heap_delete(relsetting, &tup->t_self);
@@ -221,7 +226,8 @@ DropSetting(Oid databaseid, Oid roleid)
  * databaseid/roleid.
  */
 void
-ApplySetting(Oid databaseid, Oid roleid, Relation relsetting, GucSource source)
+ApplySetting(Snapshot snapshot, Oid databaseid, Oid roleid,
+                        Relation relsetting, GucSource source)
 {
        SysScanDesc scan;
        ScanKeyData keys[2];
@@ -239,7 +245,7 @@ ApplySetting(Oid databaseid, Oid roleid, Relation relsetting, GucSource source)
                                ObjectIdGetDatum(roleid));
 
        scan = systable_beginscan(relsetting, DbRoleSettingDatidRolidIndexId, true,
-                                                         SnapshotNow, 2, keys);
+                                                         snapshot, 2, keys);
        while (HeapTupleIsValid(tup = systable_getnext(scan)))
        {
                bool            isnull;