1 /*------------------------------------------------------------------------- 2 * 3 * tablecmds.h 4 * prototypes for tablecmds.c. 5 * 6 * 7 * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/commands/tablecmds.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef TABLECMDS_H 15 #define TABLECMDS_H 16 17 #include "access/htup.h" 18 #include "catalog/dependency.h" 19 #include "catalog/objectaddress.h" 20 #include "nodes/parsenodes.h" 21 #include "storage/lock.h" 22 #include "utils/relcache.h" 23 24 struct AlterTableUtilityContext; /* avoid including tcop/utility.h here */ 25 26 27 extern ObjectAddress DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId, 28 ObjectAddress *typaddress, const char *queryString); 29 30 extern void RemoveRelations(DropStmt *drop); 31 32 extern Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode); 33 34 extern void AlterTable(AlterTableStmt *stmt, LOCKMODE lockmode, 35 struct AlterTableUtilityContext *context); 36 37 extern LOCKMODE AlterTableGetLockLevel(List *cmds); 38 39 extern void ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lockmode); 40 41 extern void AlterTableInternal(Oid relid, List *cmds, bool recurse); 42 43 extern Oid AlterTableMoveAll(AlterTableMoveAllStmt *stmt); 44 45 extern ObjectAddress AlterTableNamespace(AlterObjectSchemaStmt *stmt, 46 Oid *oldschema); 47 48 extern void AlterTableNamespaceInternal(Relation rel, Oid oldNspOid, 49 Oid nspOid, ObjectAddresses *objsMoved); 50 51 extern void AlterRelationNamespaceInternal(Relation classRel, Oid relOid, 52 Oid oldNspOid, Oid newNspOid, 53 bool hasDependEntry, 54 ObjectAddresses *objsMoved); 55 56 extern void CheckTableNotInUse(Relation rel, const char *stmt); 57 58 extern void ExecuteTruncate(TruncateStmt *stmt); 59 extern void ExecuteTruncateGuts(List *explicit_rels, List *relids, List *relids_logged, 60 DropBehavior behavior, bool restart_seqs); 61 62 extern void SetRelationHasSubclass(Oid relationId, bool relhassubclass); 63 64 extern ObjectAddress renameatt(RenameStmt *stmt); 65 66 extern ObjectAddress RenameConstraint(RenameStmt *stmt); 67 68 extern ObjectAddress RenameRelation(RenameStmt *stmt); 69 70 extern void RenameRelationInternal(Oid myrelid, 71 const char *newrelname, bool is_internal, 72 bool is_index); 73 74 extern void ResetRelRewrite(Oid myrelid); 75 76 extern void find_composite_type_dependencies(Oid typeOid, 77 Relation origRelation, 78 const char *origTypeName); 79 80 extern void check_of_type(HeapTuple typetuple); 81 82 extern void register_on_commit_action(Oid relid, OnCommitAction action); 83 extern void remove_on_commit_action(Oid relid); 84 85 extern void PreCommit_on_commit_actions(void); 86 extern void AtEOXact_on_commit_actions(bool isCommit); 87 extern void AtEOSubXact_on_commit_actions(bool isCommit, 88 SubTransactionId mySubid, 89 SubTransactionId parentSubid); 90 91 extern void RangeVarCallbackOwnsTable(const RangeVar *relation, 92 Oid relId, Oid oldRelId, void *arg); 93 94 extern void RangeVarCallbackOwnsRelation(const RangeVar *relation, 95 Oid relId, Oid oldRelId, void *arg); 96 extern bool PartConstraintImpliedByRelConstraint(Relation scanrel, 97 List *partConstraint); 98 99 #endif /* TABLECMDS_H */ 100