Move pg_constraint.h function declarations to new file pg_constraint_fn.h.
A pending patch requires exporting a function returning Bitmapset from catalog/pg_constraint.c. As things stand, that would mean including nodes/bitmapset.h in pg_constraint.h, which might be hazardous for the client-side includability of that header. It's not entirely clear whether any client-side code needs to include pg_constraint.h, but it seems prudent to assume that there is some such code somewhere. Therefore, split off the function definitions into a new file pg_constraint_fn.h, similarly to what we've done for some other catalog header files.
This commit is contained in:
parent
2564be360a
commit
72eee410d4
|
@ -28,6 +28,7 @@
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_collation_fn.h"
|
#include "catalog/pg_collation_fn.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_conversion.h"
|
#include "catalog/pg_conversion.h"
|
||||||
#include "catalog/pg_conversion_fn.h"
|
#include "catalog/pg_conversion_fn.h"
|
||||||
#include "catalog/pg_database.h"
|
#include "catalog/pg_database.h"
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#include "catalog/pg_attrdef.h"
|
#include "catalog/pg_attrdef.h"
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_foreign_table.h"
|
#include "catalog/pg_foreign_table.h"
|
||||||
#include "catalog/pg_inherits.h"
|
#include "catalog/pg_inherits.h"
|
||||||
#include "catalog/pg_namespace.h"
|
#include "catalog/pg_namespace.h"
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "catalog/pg_am.h"
|
#include "catalog/pg_am.h"
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_operator.h"
|
#include "catalog/pg_operator.h"
|
||||||
#include "catalog/pg_opclass.h"
|
#include "catalog/pg_opclass.h"
|
||||||
#include "catalog/pg_tablespace.h"
|
#include "catalog/pg_tablespace.h"
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "catalog/pg_event_trigger.h"
|
#include "catalog/pg_event_trigger.h"
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_conversion.h"
|
#include "catalog/pg_conversion.h"
|
||||||
#include "catalog/pg_database.h"
|
#include "catalog/pg_database.h"
|
||||||
#include "catalog/pg_extension.h"
|
#include "catalog/pg_extension.h"
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "catalog/indexing.h"
|
#include "catalog/indexing.h"
|
||||||
#include "catalog/objectaccess.h"
|
#include "catalog/objectaccess.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_operator.h"
|
#include "catalog/pg_operator.h"
|
||||||
#include "catalog/pg_type.h"
|
#include "catalog/pg_type.h"
|
||||||
#include "commands/defrem.h"
|
#include "commands/defrem.h"
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "catalog/pg_am.h"
|
#include "catalog/pg_am.h"
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_depend.h"
|
#include "catalog/pg_depend.h"
|
||||||
#include "catalog/pg_foreign_table.h"
|
#include "catalog/pg_foreign_table.h"
|
||||||
#include "catalog/pg_inherits.h"
|
#include "catalog/pg_inherits.h"
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "catalog/indexing.h"
|
#include "catalog/indexing.h"
|
||||||
#include "catalog/objectaccess.h"
|
#include "catalog/objectaccess.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_proc.h"
|
#include "catalog/pg_proc.h"
|
||||||
#include "catalog/pg_trigger.h"
|
#include "catalog/pg_trigger.h"
|
||||||
#include "catalog/pg_type.h"
|
#include "catalog/pg_type.h"
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "catalog/pg_authid.h"
|
#include "catalog/pg_authid.h"
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_depend.h"
|
#include "catalog/pg_depend.h"
|
||||||
#include "catalog/pg_enum.h"
|
#include "catalog/pg_enum.h"
|
||||||
#include "catalog/pg_language.h"
|
#include "catalog/pg_language.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
|
|
||||||
#include "catalog/pg_aggregate.h"
|
#include "catalog/pg_aggregate.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_type.h"
|
#include "catalog/pg_type.h"
|
||||||
#include "nodes/makefuncs.h"
|
#include "nodes/makefuncs.h"
|
||||||
#include "nodes/nodeFuncs.h"
|
#include "nodes/nodeFuncs.h"
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "catalog/catalog.h"
|
#include "catalog/catalog.h"
|
||||||
#include "catalog/heap.h"
|
#include "catalog/heap.h"
|
||||||
#include "catalog/pg_am.h"
|
#include "catalog/pg_am.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_type.h"
|
#include "catalog/pg_type.h"
|
||||||
#include "commands/defrem.h"
|
#include "commands/defrem.h"
|
||||||
#include "nodes/makefuncs.h"
|
#include "nodes/makefuncs.h"
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "catalog/pg_am.h"
|
#include "catalog/pg_am.h"
|
||||||
#include "catalog/pg_collation.h"
|
#include "catalog/pg_collation.h"
|
||||||
#include "catalog/pg_constraint.h"
|
#include "catalog/pg_constraint.h"
|
||||||
|
#include "catalog/pg_constraint_fn.h"
|
||||||
#include "catalog/pg_opclass.h"
|
#include "catalog/pg_opclass.h"
|
||||||
#include "catalog/pg_operator.h"
|
#include "catalog/pg_operator.h"
|
||||||
#include "catalog/pg_type.h"
|
#include "catalog/pg_type.h"
|
||||||
|
|
|
@ -20,8 +20,6 @@
|
||||||
#define PG_CONSTRAINT_H
|
#define PG_CONSTRAINT_H
|
||||||
|
|
||||||
#include "catalog/genbki.h"
|
#include "catalog/genbki.h"
|
||||||
#include "catalog/dependency.h"
|
|
||||||
#include "nodes/pg_list.h"
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* pg_constraint definition. cpp turns this into
|
* pg_constraint definition. cpp turns this into
|
||||||
|
@ -178,6 +176,13 @@ typedef FormData_pg_constraint *Form_pg_constraint;
|
||||||
#define Anum_pg_constraint_conbin 23
|
#define Anum_pg_constraint_conbin 23
|
||||||
#define Anum_pg_constraint_consrc 24
|
#define Anum_pg_constraint_consrc 24
|
||||||
|
|
||||||
|
/* ----------------
|
||||||
|
* initial contents of pg_constraint
|
||||||
|
* ----------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* nothing, at present */
|
||||||
|
|
||||||
|
|
||||||
/* Valid values for contype */
|
/* Valid values for contype */
|
||||||
#define CONSTRAINT_CHECK 'c'
|
#define CONSTRAINT_CHECK 'c'
|
||||||
|
@ -193,66 +198,4 @@ typedef FormData_pg_constraint *Form_pg_constraint;
|
||||||
* the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
|
* the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* Identify constraint type for lookup purposes
|
|
||||||
*/
|
|
||||||
typedef enum ConstraintCategory
|
|
||||||
{
|
|
||||||
CONSTRAINT_RELATION,
|
|
||||||
CONSTRAINT_DOMAIN,
|
|
||||||
CONSTRAINT_ASSERTION /* for future expansion */
|
|
||||||
} ConstraintCategory;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* prototypes for functions in pg_constraint.c
|
|
||||||
*/
|
|
||||||
extern Oid CreateConstraintEntry(const char *constraintName,
|
|
||||||
Oid constraintNamespace,
|
|
||||||
char constraintType,
|
|
||||||
bool isDeferrable,
|
|
||||||
bool isDeferred,
|
|
||||||
bool isValidated,
|
|
||||||
Oid relId,
|
|
||||||
const int16 *constraintKey,
|
|
||||||
int constraintNKeys,
|
|
||||||
Oid domainId,
|
|
||||||
Oid indexRelId,
|
|
||||||
Oid foreignRelId,
|
|
||||||
const int16 *foreignKey,
|
|
||||||
const Oid *pfEqOp,
|
|
||||||
const Oid *ppEqOp,
|
|
||||||
const Oid *ffEqOp,
|
|
||||||
int foreignNKeys,
|
|
||||||
char foreignUpdateType,
|
|
||||||
char foreignDeleteType,
|
|
||||||
char foreignMatchType,
|
|
||||||
const Oid *exclOp,
|
|
||||||
Node *conExpr,
|
|
||||||
const char *conBin,
|
|
||||||
const char *conSrc,
|
|
||||||
bool conIsLocal,
|
|
||||||
int conInhCount,
|
|
||||||
bool conNoInherit,
|
|
||||||
bool is_internal);
|
|
||||||
|
|
||||||
extern void RemoveConstraintById(Oid conId);
|
|
||||||
extern void RenameConstraintById(Oid conId, const char *newname);
|
|
||||||
extern void SetValidatedConstraintById(Oid conId);
|
|
||||||
|
|
||||||
extern bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId,
|
|
||||||
Oid objNamespace, const char *conname);
|
|
||||||
extern char *ChooseConstraintName(const char *name1, const char *name2,
|
|
||||||
const char *label, Oid namespaceid,
|
|
||||||
List *others);
|
|
||||||
|
|
||||||
extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId,
|
|
||||||
Oid newNspId, bool isType, ObjectAddresses *objsMoved);
|
|
||||||
extern Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok);
|
|
||||||
extern Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok);
|
|
||||||
|
|
||||||
extern bool check_functional_grouping(Oid relid,
|
|
||||||
Index varno, Index varlevelsup,
|
|
||||||
List *grouping_columns,
|
|
||||||
List **constraintDeps);
|
|
||||||
|
|
||||||
#endif /* PG_CONSTRAINT_H */
|
#endif /* PG_CONSTRAINT_H */
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* pg_constraint_fn.h
|
||||||
|
* prototypes for functions in catalog/pg_constraint.c
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
|
||||||
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
|
*
|
||||||
|
* src/include/catalog/pg_constraint_fn.h
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef PG_CONSTRAINT_FN_H
|
||||||
|
#define PG_CONSTRAINT_FN_H
|
||||||
|
|
||||||
|
#include "catalog/dependency.h"
|
||||||
|
#include "nodes/pg_list.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Identify constraint type for lookup purposes
|
||||||
|
*/
|
||||||
|
typedef enum ConstraintCategory
|
||||||
|
{
|
||||||
|
CONSTRAINT_RELATION,
|
||||||
|
CONSTRAINT_DOMAIN,
|
||||||
|
CONSTRAINT_ASSERTION /* for future expansion */
|
||||||
|
} ConstraintCategory;
|
||||||
|
|
||||||
|
extern Oid CreateConstraintEntry(const char *constraintName,
|
||||||
|
Oid constraintNamespace,
|
||||||
|
char constraintType,
|
||||||
|
bool isDeferrable,
|
||||||
|
bool isDeferred,
|
||||||
|
bool isValidated,
|
||||||
|
Oid relId,
|
||||||
|
const int16 *constraintKey,
|
||||||
|
int constraintNKeys,
|
||||||
|
Oid domainId,
|
||||||
|
Oid indexRelId,
|
||||||
|
Oid foreignRelId,
|
||||||
|
const int16 *foreignKey,
|
||||||
|
const Oid *pfEqOp,
|
||||||
|
const Oid *ppEqOp,
|
||||||
|
const Oid *ffEqOp,
|
||||||
|
int foreignNKeys,
|
||||||
|
char foreignUpdateType,
|
||||||
|
char foreignDeleteType,
|
||||||
|
char foreignMatchType,
|
||||||
|
const Oid *exclOp,
|
||||||
|
Node *conExpr,
|
||||||
|
const char *conBin,
|
||||||
|
const char *conSrc,
|
||||||
|
bool conIsLocal,
|
||||||
|
int conInhCount,
|
||||||
|
bool conNoInherit,
|
||||||
|
bool is_internal);
|
||||||
|
|
||||||
|
extern void RemoveConstraintById(Oid conId);
|
||||||
|
extern void RenameConstraintById(Oid conId, const char *newname);
|
||||||
|
extern void SetValidatedConstraintById(Oid conId);
|
||||||
|
|
||||||
|
extern bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId,
|
||||||
|
Oid objNamespace, const char *conname);
|
||||||
|
extern char *ChooseConstraintName(const char *name1, const char *name2,
|
||||||
|
const char *label, Oid namespaceid,
|
||||||
|
List *others);
|
||||||
|
|
||||||
|
extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId,
|
||||||
|
Oid newNspId, bool isType, ObjectAddresses *objsMoved);
|
||||||
|
extern Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok);
|
||||||
|
extern Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok);
|
||||||
|
|
||||||
|
extern bool check_functional_grouping(Oid relid,
|
||||||
|
Index varno, Index varlevelsup,
|
||||||
|
List *grouping_columns,
|
||||||
|
List **constraintDeps);
|
||||||
|
|
||||||
|
#endif /* PG_CONSTRAINT_FN_H */
|
Loading…
Reference in New Issue