|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "access/genam.h"#include "access/htup_details.h"#include "access/table.h"#include "access/xact.h"#include "catalog/catalog.h"#include "catalog/dependency.h"#include "catalog/indexing.h"#include "catalog/pg_authid.h"#include "catalog/pg_auth_members.h"#include "catalog/pg_collation.h"#include "catalog/pg_conversion.h"#include "catalog/pg_database.h"#include "catalog/pg_default_acl.h"#include "catalog/pg_event_trigger.h"#include "catalog/pg_extension.h"#include "catalog/pg_foreign_data_wrapper.h"#include "catalog/pg_foreign_server.h"#include "catalog/pg_language.h"#include "catalog/pg_largeobject.h"#include "catalog/pg_namespace.h"#include "catalog/pg_opclass.h"#include "catalog/pg_operator.h"#include "catalog/pg_opfamily.h"#include "catalog/pg_proc.h"#include "catalog/pg_shdepend.h"#include "catalog/pg_statistic_ext.h"#include "catalog/pg_subscription.h"#include "catalog/pg_tablespace.h"#include "catalog/pg_ts_config.h"#include "catalog/pg_ts_dict.h"#include "catalog/pg_type.h"#include "catalog/pg_user_mapping.h"#include "commands/alter.h"#include "commands/defrem.h"#include "commands/event_trigger.h"#include "commands/policy.h"#include "commands/publicationcmds.h"#include "commands/schemacmds.h"#include "commands/subscriptioncmds.h"#include "commands/tablecmds.h"#include "commands/tablespace.h"#include "commands/typecmds.h"#include "miscadmin.h"#include "storage/lmgr.h"#include "utils/acl.h"#include "utils/fmgroids.h"#include "utils/lsyscache.h"#include "utils/memutils.h"#include "utils/syscache.h"
Go to the source code of this file.
Data Structures | |
| struct | ShDependObjectInfo |
| struct | remoteDep |
Macros | |
| #define | MAX_REPORTED_DEPS 100 |
Enumerations | |
| enum | SharedDependencyObjectType { LOCAL_OBJECT , SHARED_OBJECT , REMOTE_OBJECT } |
| #define MAX_REPORTED_DEPS 100 |
| Enumerator | |
|---|---|
| LOCAL_OBJECT | |
| SHARED_OBJECT | |
| REMOTE_OBJECT | |
Definition at line 67 of file pg_shdepend.c.
Definition at line 316 of file pg_shdepend.c.
References fb(), RowExclusiveLock, SHARED_DEPENDENCY_ACL, SHARED_DEPENDENCY_OWNER, shdepChangeDep(), shdepDropDependency(), table_close(), and table_open().
Referenced by AlterDatabaseOwner(), AlterEventTriggerOwner_internal(), AlterForeignDataWrapperOwner_internal(), AlterForeignServerOwner_internal(), AlterObjectOwner_internal(), AlterPublicationOwner_internal(), AlterSchemaOwner_internal(), AlterSubscriptionOwner_internal(), AlterTypeOwner_oid(), and ATExecChangeOwner().
Definition at line 391 of file pg_shdepend.c.
References fb(), InvalidOid, RowExclusiveLock, SHARED_DEPENDENCY_INVALID, SHARED_DEPENDENCY_TABLESPACE, shdepChangeDep(), shdepDropDependency(), table_close(), and table_open().
Referenced by SetRelationTableSpace().
| bool checkSharedDependencies | ( | Oid | classId, |
| Oid | objectId, | ||
| char ** | detail_msg, | ||
| char ** | detail_log_msg | ||
| ) |
Definition at line 676 of file pg_shdepend.c.
References AccessShareLock, appendStringInfo(), BTEqualStrategyNumber, ShDependObjectInfo::deptype, ereport, errcode(), errmsg(), ERROR, fb(), getObjectDescription(), GETSTRUCT(), HeapTupleIsValid, i, initStringInfo(), InvalidOid, IsPinnedObject(), lappend(), lfirst, list_free_deep(), LOCAL_OBJECT, MAX_REPORTED_DEPS, MyDatabaseId, ngettext, NIL, ShDependObjectInfo::object, ObjectIdGetDatum(), ShDependObjectInfo::objtype, palloc(), palloc_object, pfree(), qsort, REMOTE_OBJECT, repalloc(), ScanKeyInit(), shared_dependency_comparator(), SHARED_DEPENDENCY_INVALID, SHARED_OBJECT, storeObjectDescription(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by DropRole(), and DropTableSpace().
Definition at line 1190 of file pg_shdepend.c.
References InvalidOid, IsSharedRelation(), and MyDatabaseId.
Referenced by shdepAddDependency(), shdepChangeDep(), and shdepDropDependency().
Definition at line 895 of file pg_shdepend.c.
References BTEqualStrategyNumber, CatalogCloseIndexes(), CatalogOpenIndexes(), CatalogTuplesMultiInsertWithInfo(), CharGetDatum(), ExecClearTuple(), ExecDropSingleTupleTableSlot(), ExecStoreVirtualTuple(), fb(), FormData_pg_shdepend, GETSTRUCT(), HeapTupleIsValid, i, Int32GetDatum(), MakeSingleTupleTableSlot(), MAX_CATALOG_MULTI_INSERT_BYTES, ObjectIdGetDatum(), palloc_array, pfree(), RelationGetDescr, RowExclusiveLock, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), table_open(), TupleTableSlot::tts_values, and TTSOpsHeapTuple.
Referenced by createdb().
Definition at line 1047 of file pg_shdepend.c.
References fb(), InvalidOid, RowExclusiveLock, SHARED_DEPENDENCY_INVALID, shdepDropDependency(), table_close(), and table_open().
Referenced by AlterPolicy(), deleteOneObject(), DelRoleMems(), DropRole(), DropSubscription(), DropTableSpace(), GenerateTypeDependencies(), makeConfigurationDependencies(), makeOperatorDependencies(), and RemoveRoleFromObjectPolicy().
Definition at line 999 of file pg_shdepend.c.
References BTEqualStrategyNumber, CatalogTupleDelete(), fb(), HeapTupleIsValid, InvalidOid, ObjectIdGetDatum(), RowExclusiveLock, ScanKeyInit(), SHARED_DEPENDENCY_INVALID, shdepDropDependency(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by dropdb().
Definition at line 421 of file pg_shdepend.c.
References fb().
Referenced by updateAclDependenciesWorker().
Definition at line 168 of file pg_shdepend.c.
References ObjectAddress::classId, fb(), recordSharedDependencyOn(), and SHARED_DEPENDENCY_OWNER.
Referenced by CollationCreate(), ConversionCreate(), createdb(), CreateForeignDataWrapper(), CreateForeignServer(), CreateOpFamily(), CreateProceduralLanguage(), CreatePublication(), CreateStatistics(), CreateSubscription(), CreateTableSpace(), CreateUserMapping(), DefineOpClass(), GenerateTypeDependencies(), heap_create_with_catalog(), insert_event_trigger_tuple(), InsertExtensionTuple(), inv_create(), makeConfigurationDependencies(), makeDictionaryDependencies(), makeOperatorDependencies(), NamespaceCreate(), ProcedureCreate(), and SetDefaultACL().
Definition at line 370 of file pg_shdepend.c.
References fb(), ObjectAddressSet, recordSharedDependencyOn(), SHARED_DEPENDENCY_TABLESPACE, and tablespace.
Referenced by heap_create().
| void recordSharedDependencyOn | ( | ObjectAddress * | depender, |
| ObjectAddress * | referenced, | ||
| SharedDependencyType | deptype | ||
| ) |
Definition at line 125 of file pg_shdepend.c.
References Assert, fb(), IsBootstrapProcessingMode, IsPinnedObject(), RowExclusiveLock, shdepAddDependency(), table_close(), and table_open().
Referenced by AlterPolicy(), CreatePolicy(), recordDependencyOnOwner(), recordDependencyOnTablespace(), and RemoveRoleFromObjectPolicy().
Definition at line 610 of file pg_shdepend.c.
Referenced by checkSharedDependencies().
|
static |
Definition at line 1069 of file pg_shdepend.c.
References CatalogTupleInsert(), CharGetDatum(), classIdGetDbId(), fb(), heap_form_tuple(), heap_freetuple(), Int32GetDatum(), ObjectIdGetDatum(), shdepLockAndCheckObject(), and values.
Referenced by recordSharedDependencyOn(), and updateAclDependenciesWorker().
|
static |
Definition at line 206 of file pg_shdepend.c.
References BTEqualStrategyNumber, CatalogTupleDelete(), CatalogTupleInsert(), CatalogTupleUpdate(), CharGetDatum(), classIdGetDbId(), elog, ERROR, fb(), GETSTRUCT(), heap_copytuple(), heap_form_tuple(), heap_freetuple(), Int32GetDatum(), IsPinnedObject(), ObjectIdGetDatum(), RelationGetDescr, ScanKeyInit(), shdepLockAndCheckObject(), systable_beginscan(), systable_endscan(), systable_getnext(), and values.
Referenced by changeDependencyOnOwner(), and changeDependencyOnTablespace().
|
static |
Definition at line 1124 of file pg_shdepend.c.
References BTEqualStrategyNumber, CatalogTupleDelete(), classIdGetDbId(), fb(), GETSTRUCT(), HeapTupleIsValid, Int32GetDatum(), ObjectIdGetDatum(), OidIsValid, ScanKeyInit(), SHARED_DEPENDENCY_INVALID, systable_beginscan(), systable_endscan(), and systable_getnext().
Referenced by changeDependencyOnOwner(), changeDependencyOnTablespace(), deleteSharedDependencyRecordsFor(), dropDatabaseDependencies(), and updateAclDependenciesWorker().
| void shdepDropOwned | ( | List * | roleids, |
| DropBehavior | behavior | ||
| ) |
Definition at line 1342 of file pg_shdepend.c.
References AcquireDeletionLock(), add_exact_object_address(), Assert, BTEqualStrategyNumber, ObjectAddress::classId, elog, ereport, errcode(), errmsg(), ERROR, fb(), free_object_addresses(), getObjectDescription(), GETSTRUCT(), InvalidOid, IsPinnedObject(), lfirst_oid, MyDatabaseId, new_object_addresses(), ObjectAddress::objectId, ObjectIdGetDatum(), ObjectAddress::objectSubId, performMultipleDeletions(), ReleaseDeletionLock(), RemoveRoleFromInitPriv(), RemoveRoleFromObjectACL(), RemoveRoleFromObjectPolicy(), RowExclusiveLock, ScanKeyInit(), SHARED_DEPENDENCY_ACL, SHARED_DEPENDENCY_INITACL, SHARED_DEPENDENCY_INVALID, SHARED_DEPENDENCY_OWNER, SHARED_DEPENDENCY_POLICY, sort_object_addresses(), systable_beginscan(), systable_endscan(), systable_getnext(), systable_recheck_tuple(), table_close(), and table_open().
Referenced by DropOwnedObjects().
Definition at line 1211 of file pg_shdepend.c.
References AccessShareLock, elog, ereport, errcode(), errmsg(), ERROR, fb(), get_database_name(), get_tablespace_name(), LockSharedObject(), ObjectIdGetDatum(), pfree(), SearchSysCacheExists1, and tablespace.
Referenced by AlterDatabaseSet(), AlterRoleSet(), shdepAddDependency(), and shdepChangeDep().
Definition at line 1530 of file pg_shdepend.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, BTEqualStrategyNumber, ObjectAddress::classId, CommandCounterIncrement(), CurrentMemoryContext, elog, ereport, errcode(), errmsg(), ERROR, fb(), getObjectDescription(), GETSTRUCT(), InvalidOid, IsPinnedObject(), lfirst_oid, MemoryContextDelete(), MemoryContextSwitchTo(), MyDatabaseId, ObjectAddress::objectId, ObjectIdGetDatum(), ObjectAddress::objectSubId, RowExclusiveLock, ScanKeyInit(), SHARED_DEPENDENCY_ACL, SHARED_DEPENDENCY_INITACL, SHARED_DEPENDENCY_OWNER, SHARED_DEPENDENCY_POLICY, SHARED_DEPENDENCY_TABLESPACE, shdepReassignOwned_InitAcl(), shdepReassignOwned_Owner(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by ReassignOwnedObjects().
|
static |
Definition at line 1734 of file pg_shdepend.c.
References fb(), and ReplaceRoleInInitPriv().
Referenced by shdepReassignOwned().
|
static |
Definition at line 1647 of file pg_shdepend.c.
References AccessExclusiveLock, AlterEventTriggerOwner_oid(), AlterForeignDataWrapperOwner_oid(), AlterForeignServerOwner_oid(), AlterObjectOwner_internal(), AlterPublicationOwner_oid(), AlterSchemaOwner_oid(), AlterSubscriptionOwner_oid(), AlterTypeOwner_oid(), ATExecChangeOwner(), elog, ERROR, and fb().
Referenced by shdepReassignOwned().
|
static |
Definition at line 1276 of file pg_shdepend.c.
References _, appendStringInfo(), appendStringInfoChar(), elog, ERROR, fb(), getObjectDescription(), LOCAL_OBJECT, ngettext, pfree(), REMOTE_OBJECT, SHARED_DEPENDENCY_ACL, SHARED_DEPENDENCY_INITACL, SHARED_DEPENDENCY_OWNER, SHARED_DEPENDENCY_POLICY, SHARED_DEPENDENCY_TABLESPACE, SHARED_OBJECT, and type.
Referenced by checkSharedDependencies().
| void updateAclDependencies | ( | Oid | classId, |
| Oid | objectId, | ||
| int32 | objsubId, | ||
| Oid | ownerId, | ||
| int | noldmembers, | ||
| Oid * | oldmembers, | ||
| int | nnewmembers, | ||
| Oid * | newmembers | ||
| ) |
Definition at line 491 of file pg_shdepend.c.
References fb(), SHARED_DEPENDENCY_ACL, and updateAclDependenciesWorker().
Referenced by AddRoleMems(), ExecGrant_Attribute(), ExecGrant_common(), ExecGrant_Largeobject(), ExecGrant_Parameter(), ExecGrant_Relation(), recordDependencyOnNewAcl(), and SetDefaultACL().
|
static |
Definition at line 525 of file pg_shdepend.c.
References fb(), getOidListDiff(), i, IsPinnedObject(), pfree(), RowExclusiveLock, SHARED_DEPENDENCY_ACL, shdepAddDependency(), shdepDropDependency(), table_close(), and table_open().
Referenced by updateAclDependencies(), and updateInitAclDependencies().
| void updateInitAclDependencies | ( | Oid | classId, |
| Oid | objectId, | ||
| int32 | objsubId, | ||
| int | noldmembers, | ||
| Oid * | oldmembers, | ||
| int | nnewmembers, | ||
| Oid * | newmembers | ||
| ) |
Definition at line 512 of file pg_shdepend.c.
References fb(), InvalidOid, SHARED_DEPENDENCY_INITACL, and updateAclDependenciesWorker().
Referenced by recordExtensionInitPrivWorker(), RemoveRoleFromInitPriv(), and ReplaceRoleInInitPriv().