1 /*-------------------------------------------------------------------------
2  *
3  * tablecmds.h
4  *	  prototypes for tablecmds.c.
5  *
6  *
7  * Portions Copyright (c) 1996-2017, 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 
25 extern ObjectAddress DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
26 			   ObjectAddress *typaddress, const char *queryString);
27 
28 extern void RemoveRelations(DropStmt *drop);
29 
30 extern Oid	AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode);
31 
32 extern void AlterTable(Oid relid, LOCKMODE lockmode, AlterTableStmt *stmt);
33 
34 extern LOCKMODE AlterTableGetLockLevel(List *cmds);
35 
36 extern void ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lockmode);
37 
38 extern void AlterTableInternal(Oid relid, List *cmds, bool recurse);
39 
40 extern Oid	AlterTableMoveAll(AlterTableMoveAllStmt *stmt);
41 
42 extern ObjectAddress AlterTableNamespace(AlterObjectSchemaStmt *stmt,
43 					Oid *oldschema);
44 
45 extern void AlterTableNamespaceInternal(Relation rel, Oid oldNspOid,
46 							Oid nspOid, ObjectAddresses *objsMoved);
47 
48 extern void AlterRelationNamespaceInternal(Relation classRel, Oid relOid,
49 							   Oid oldNspOid, Oid newNspOid,
50 							   bool hasDependEntry,
51 							   ObjectAddresses *objsMoved);
52 
53 extern void CheckTableNotInUse(Relation rel, const char *stmt);
54 
55 extern void ExecuteTruncate(TruncateStmt *stmt);
56 
57 extern void SetRelationHasSubclass(Oid relationId, bool relhassubclass);
58 
59 extern ObjectAddress renameatt(RenameStmt *stmt);
60 
61 extern ObjectAddress renameatt_type(RenameStmt *stmt);
62 
63 extern ObjectAddress RenameConstraint(RenameStmt *stmt);
64 
65 extern ObjectAddress RenameRelation(RenameStmt *stmt);
66 
67 extern void RenameRelationInternal(Oid myrelid,
68 					   const char *newrelname, bool is_internal);
69 
70 extern void find_composite_type_dependencies(Oid typeOid,
71 								 Relation origRelation,
72 								 const char *origTypeName);
73 
74 extern void check_of_type(HeapTuple typetuple);
75 
76 extern void register_on_commit_action(Oid relid, OnCommitAction action);
77 extern void remove_on_commit_action(Oid relid);
78 
79 extern void PreCommit_on_commit_actions(void);
80 extern void AtEOXact_on_commit_actions(bool isCommit);
81 extern void AtEOSubXact_on_commit_actions(bool isCommit,
82 							  SubTransactionId mySubid,
83 							  SubTransactionId parentSubid);
84 
85 extern void RangeVarCallbackOwnsTable(const RangeVar *relation,
86 						  Oid relId, Oid oldRelId, void *arg);
87 
88 extern void RangeVarCallbackOwnsRelation(const RangeVar *relation,
89 							 Oid relId, Oid oldRelId, void *noCatalogs);
90 #endif							/* TABLECMDS_H */
91