*** a/src/backend/catalog/pg_db_role_setting.c
--- b/src/backend/catalog/pg_db_role_setting.c
***************
*** 33,39 **** AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
  
  	/* Get the old tuple, if any. */
  
! 	rel = heap_open(DbRoleSettingRelationId, RowExclusiveLock);
  	ScanKeyInit(&scankey[0],
  				Anum_pg_db_role_setting_setdatabase,
  				BTEqualStrategyNumber, F_OIDEQ,
--- 33,39 ----
  
  	/* Get the old tuple, if any. */
  
! 	rel = heap_open(DbRoleSettingRelationId, ShareUpdateExclusiveLock);
  	ScanKeyInit(&scankey[0],
  				Anum_pg_db_role_setting_setdatabase,
  				BTEqualStrategyNumber, F_OIDEQ,
***************
*** 181,187 **** DropSetting(Oid databaseid, Oid roleid)
  	HeapTuple	tup;
  	int			numkeys = 0;
  
! 	relsetting = heap_open(DbRoleSettingRelationId, RowExclusiveLock);
  
  	if (OidIsValid(databaseid))
  	{
--- 181,187 ----
  	HeapTuple	tup;
  	int			numkeys = 0;
  
! 	relsetting = heap_open(DbRoleSettingRelationId, ShareUpdateExclusiveLock);
  
  	if (OidIsValid(databaseid))
  	{
***************
*** 209,215 **** DropSetting(Oid databaseid, Oid roleid)
  	}
  	heap_endscan(scan);
  
! 	heap_close(relsetting, RowExclusiveLock);
  }
  
  /*
--- 209,215 ----
  	}
  	heap_endscan(scan);
  
! 	heap_close(relsetting, ShareUpdateExclusiveLock);
  }
  
  /*
