1 /*-------------------------------------------------------------------------
2  *
3  * tablecmds.h
4  *	  prototypes for tablecmds.c.
5  *
6  *
7  * Portions Copyright (c) 1996-2021, 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,
60 								List *relids,
61 								List *relids_logged,
62 								DropBehavior behavior,
63 								bool restart_seqs);
64 
65 extern void SetRelationHasSubclass(Oid relationId, bool relhassubclass);
66 
67 extern bool CheckRelationTableSpaceMove(Relation rel, Oid newTableSpaceId);
68 extern void SetRelationTableSpace(Relation rel, Oid newTableSpaceId,
69 								  Oid newRelFileNode);
70 
71 extern ObjectAddress renameatt(RenameStmt *stmt);
72 
73 extern ObjectAddress RenameConstraint(RenameStmt *stmt);
74 
75 extern ObjectAddress RenameRelation(RenameStmt *stmt);
76 
77 extern void RenameRelationInternal(Oid myrelid,
78 								   const char *newrelname, bool is_internal,
79 								   bool is_index);
80 
81 extern void ResetRelRewrite(Oid myrelid);
82 
83 extern void find_composite_type_dependencies(Oid typeOid,
84 											 Relation origRelation,
85 											 const char *origTypeName);
86 
87 extern void check_of_type(HeapTuple typetuple);
88 
89 extern void register_on_commit_action(Oid relid, OnCommitAction action);
90 extern void remove_on_commit_action(Oid relid);
91 
92 extern void PreCommit_on_commit_actions(void);
93 extern void AtEOXact_on_commit_actions(bool isCommit);
94 extern void AtEOSubXact_on_commit_actions(bool isCommit,
95 										  SubTransactionId mySubid,
96 										  SubTransactionId parentSubid);
97 
98 extern void RangeVarCallbackOwnsTable(const RangeVar *relation,
99 									  Oid relId, Oid oldRelId, void *arg);
100 
101 extern void RangeVarCallbackOwnsRelation(const RangeVar *relation,
102 										 Oid relId, Oid oldRelId, void *arg);
103 extern bool PartConstraintImpliedByRelConstraint(Relation scanrel,
104 												 List *partConstraint);
105 
106 #endif							/* TABLECMDS_H */
107