1 /*------------------------------------------------------------------------- 2 * 3 * pg_constraint_fn.h 4 * prototypes for functions in catalog/pg_constraint.c 5 * 6 * 7 * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/catalog/pg_constraint_fn.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef PG_CONSTRAINT_FN_H 15 #define PG_CONSTRAINT_FN_H 16 17 #include "catalog/dependency.h" 18 #include "nodes/pg_list.h" 19 20 /* 21 * Identify constraint type for lookup purposes 22 */ 23 typedef enum ConstraintCategory 24 { 25 CONSTRAINT_RELATION, 26 CONSTRAINT_DOMAIN, 27 CONSTRAINT_ASSERTION /* for future expansion */ 28 } ConstraintCategory; 29 30 extern Oid CreateConstraintEntry(const char *constraintName, 31 Oid constraintNamespace, 32 char constraintType, 33 bool isDeferrable, 34 bool isDeferred, 35 bool isValidated, 36 Oid relId, 37 const int16 *constraintKey, 38 int constraintNKeys, 39 Oid domainId, 40 Oid indexRelId, 41 Oid foreignRelId, 42 const int16 *foreignKey, 43 const Oid *pfEqOp, 44 const Oid *ppEqOp, 45 const Oid *ffEqOp, 46 int foreignNKeys, 47 char foreignUpdateType, 48 char foreignDeleteType, 49 char foreignMatchType, 50 const Oid *exclOp, 51 Node *conExpr, 52 const char *conBin, 53 const char *conSrc, 54 bool conIsLocal, 55 int conInhCount, 56 bool conNoInherit, 57 bool is_internal); 58 59 extern void RemoveConstraintById(Oid conId); 60 extern void RenameConstraintById(Oid conId, const char *newname); 61 extern void SetValidatedConstraintById(Oid conId); 62 63 extern bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId, 64 Oid objNamespace, const char *conname); 65 extern char *ChooseConstraintName(const char *name1, const char *name2, 66 const char *label, Oid namespaceid, 67 List *others); 68 69 extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, 70 Oid newNspId, bool isType, ObjectAddresses *objsMoved); 71 extern Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok); 72 extern Bitmapset *get_relation_constraint_attnos(Oid relid, const char *conname, 73 bool missing_ok, Oid *constraintOid); 74 extern Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok); 75 76 extern Bitmapset *get_primary_key_attnos(Oid relid, bool deferrableOk, 77 Oid *constraintOid); 78 79 extern bool check_functional_grouping(Oid relid, 80 Index varno, Index varlevelsup, 81 List *grouping_columns, 82 List **constraintDeps); 83 84 #endif /* PG_CONSTRAINT_FN_H */ 85