mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
My commit 3de241dba86f introduced some code to create a clone of a foreign key to a partition, but I put it in pg_constraint.c because it was too close to the contents of the pg_constraint row. With the previous commit that split out the constraint tuple deconstruction into its own routine, it makes more sense to have the FK-cloning function in tablecmds.c, mostly because its static subroutine can then be used by a future bugfix. My initial posting of this patch had this routine as static in tablecmds.c, but sadly this function is already part of the Postgres 11 ABI as exported from pg_constraint.c, so keep it as exported also just to avoid breaking any possible users of it.
102 lines
3.4 KiB
C
102 lines
3.4 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* tablecmds.h
|
|
* prototypes for tablecmds.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/commands/tablecmds.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef TABLECMDS_H
|
|
#define TABLECMDS_H
|
|
|
|
#include "access/htup.h"
|
|
#include "catalog/dependency.h"
|
|
#include "catalog/objectaddress.h"
|
|
#include "nodes/parsenodes.h"
|
|
#include "storage/lock.h"
|
|
#include "utils/relcache.h"
|
|
|
|
|
|
extern ObjectAddress DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
|
|
ObjectAddress *typaddress, const char *queryString);
|
|
|
|
extern void RemoveRelations(DropStmt *drop);
|
|
|
|
extern Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode);
|
|
|
|
extern void AlterTable(Oid relid, LOCKMODE lockmode, AlterTableStmt *stmt);
|
|
|
|
extern LOCKMODE AlterTableGetLockLevel(List *cmds);
|
|
|
|
extern void ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lockmode);
|
|
|
|
extern void AlterTableInternal(Oid relid, List *cmds, bool recurse);
|
|
|
|
extern Oid AlterTableMoveAll(AlterTableMoveAllStmt *stmt);
|
|
|
|
extern ObjectAddress AlterTableNamespace(AlterObjectSchemaStmt *stmt,
|
|
Oid *oldschema);
|
|
|
|
extern void AlterTableNamespaceInternal(Relation rel, Oid oldNspOid,
|
|
Oid nspOid, ObjectAddresses *objsMoved);
|
|
|
|
extern void AlterRelationNamespaceInternal(Relation classRel, Oid relOid,
|
|
Oid oldNspOid, Oid newNspOid,
|
|
bool hasDependEntry,
|
|
ObjectAddresses *objsMoved);
|
|
|
|
extern void CheckTableNotInUse(Relation rel, const char *stmt);
|
|
|
|
extern void ExecuteTruncate(TruncateStmt *stmt);
|
|
extern void ExecuteTruncateGuts(List *explicit_rels, List *relids, List *relids_logged,
|
|
DropBehavior behavior, bool restart_seqs);
|
|
|
|
extern void SetRelationHasSubclass(Oid relationId, bool relhassubclass);
|
|
|
|
extern ObjectAddress renameatt(RenameStmt *stmt);
|
|
|
|
extern ObjectAddress renameatt_type(RenameStmt *stmt);
|
|
|
|
extern ObjectAddress RenameConstraint(RenameStmt *stmt);
|
|
|
|
extern ObjectAddress RenameRelation(RenameStmt *stmt);
|
|
|
|
extern void RenameRelationInternal(Oid myrelid,
|
|
const char *newrelname, bool is_internal);
|
|
|
|
extern void find_composite_type_dependencies(Oid typeOid,
|
|
Relation origRelation,
|
|
const char *origTypeName);
|
|
|
|
extern void check_of_type(HeapTuple typetuple);
|
|
|
|
extern void createForeignKeyTriggers(Relation rel, Oid refRelOid,
|
|
Constraint *fkconstraint, Oid constraintOid,
|
|
Oid indexOid, bool create_action);
|
|
extern void CloneForeignKeyConstraints(Oid parentId, Oid relationId,
|
|
List **cloned);
|
|
|
|
extern void register_on_commit_action(Oid relid, OnCommitAction action);
|
|
extern void remove_on_commit_action(Oid relid);
|
|
|
|
extern void PreCommit_on_commit_actions(void);
|
|
extern void AtEOXact_on_commit_actions(bool isCommit);
|
|
extern void AtEOSubXact_on_commit_actions(bool isCommit,
|
|
SubTransactionId mySubid,
|
|
SubTransactionId parentSubid);
|
|
|
|
extern void RangeVarCallbackOwnsTable(const RangeVar *relation,
|
|
Oid relId, Oid oldRelId, void *arg);
|
|
|
|
extern void RangeVarCallbackOwnsRelation(const RangeVar *relation,
|
|
Oid relId, Oid oldRelId, void *noCatalogs);
|
|
extern bool PartConstraintImpliedByRelConstraint(Relation scanrel,
|
|
List *partConstraint);
|
|
|
|
#endif /* TABLECMDS_H */
|