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