|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "access/genam.h"#include "access/gist.h"#include "access/htup_details.h"#include "access/sysattr.h"#include "access/table.h"#include "catalog/catalog.h"#include "catalog/dependency.h"#include "catalog/heap.h"#include "catalog/indexing.h"#include "catalog/objectaccess.h"#include "catalog/pg_constraint.h"#include "catalog/pg_operator.h"#include "catalog/pg_type.h"#include "commands/defrem.h"#include "common/int.h"#include "utils/array.h"#include "utils/builtins.h"#include "utils/fmgroids.h"#include "utils/lsyscache.h"#include "utils/rel.h"#include "utils/syscache.h"
Go to the source code of this file.
| bool AdjustNotNullInheritance | ( | Oid | relid, |
| AttrNumber | attnum, | ||
| bool | is_local, | ||
| bool | is_no_inherit, | ||
| bool | is_notvalid | ||
| ) |
Definition at line 741 of file pg_constraint.c.
References attnum, CatalogTupleUpdate(), ereport, errcode(), errhint(), errmsg(), ERROR, fb(), findNotNullConstraintAttnum(), get_rel_name(), GETSTRUCT(), HeapTupleIsValid, NameStr, pg_add_s16_overflow(), RowExclusiveLock, table_close(), and table_open().
Referenced by AddRelationNewConstraints().
| void AlterConstraintNamespaces | ( | Oid | ownerId, |
| Oid | oldNspId, | ||
| Oid | newNspId, | ||
| bool | isType, | ||
| ObjectAddresses * | objsMoved | ||
| ) |
Definition at line 1040 of file pg_constraint.c.
References add_exact_object_address(), BTEqualStrategyNumber, CatalogTupleUpdate(), fb(), GETSTRUCT(), heap_copytuple(), HeapTupleIsValid, InvalidOid, InvokeObjectPostAlterHook, object_address_present(), ObjectAddressSet, ObjectIdGetDatum(), RowExclusiveLock, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by AlterTableNamespaceInternal(), and AlterTypeNamespaceInternal().
| bool check_functional_grouping | ( | Oid | relid, |
| Index | varno, | ||
| Index | varlevelsup, | ||
| List * | grouping_columns, | ||
| List ** | constraintDeps | ||
| ) |
Definition at line 1725 of file pg_constraint.c.
References bms_add_member(), bms_is_subset(), fb(), FirstLowInvalidHeapAttributeNumber, get_primary_key_attnos(), IsA, lappend_oid(), and lfirst.
Referenced by init_grouping_targets(), and substitute_grouped_columns_mutator().
| char * ChooseConstraintName | ( | const char * | name1, |
| const char * | name2, | ||
| const char * | label, | ||
| Oid | namespaceid, | ||
| List * | others | ||
| ) |
Definition at line 513 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, CStringGetDatum(), fb(), HeapTupleIsValid, label, lfirst, makeObjectName(), NAMEDATALEN, ObjectIdGetDatum(), pfree(), ScanKeyInit(), snprintf, strlcpy(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by addFkConstraint(), AddRelationNewConstraints(), AddRelationNotNullConstraints(), ATExecAddConstraint(), ATExecSetNotNull(), domainAddCheckConstraint(), and domainAddNotNullConstraint().
Definition at line 457 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, CStringGetDatum(), fb(), HeapTupleIsValid, ObjectIdGetDatum(), ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by ChooseRelationName().
| bool ConstraintNameIsUsed | ( | ConstraintCategory | conCat, |
| Oid | objId, | ||
| const char * | conname | ||
| ) |
Definition at line 412 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, CONSTRAINT_DOMAIN, CONSTRAINT_RELATION, CStringGetDatum(), fb(), HeapTupleIsValid, InvalidOid, ObjectIdGetDatum(), ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by addFkConstraint(), AddRelationNewConstraints(), ATExecAddConstraint(), domainAddCheckConstraint(), domainAddNotNullConstraint(), index_create(), and RenameConstraintById().
Definition at line 1109 of file pg_constraint.c.
References Assert, CatalogTupleUpdate(), deleteDependencyRecordsForClass(), DEPENDENCY_PARTITION_PRI, DEPENDENCY_PARTITION_SEC, elog, ereport, errcode(), errmsg(), ERROR, fb(), GETSTRUCT(), heap_copytuple(), HeapTupleIsValid, InvalidOid, ObjectAddressSet, ObjectIdGetDatum(), OidIsValid, pg_add_s16_overflow(), recordDependencyOn(), ReleaseSysCache(), RowExclusiveLock, SearchSysCache1(), HeapTupleData::t_self, table_close(), and table_open().
Referenced by ATExecAttachPartitionIdx(), AttachPartitionEnsureIndexes(), AttachPartitionForeignKey(), DefineIndex(), and DetachPartitionFinalize().
| Oid CreateConstraintEntry | ( | const char * | constraintName, |
| Oid | constraintNamespace, | ||
| char | constraintType, | ||
| bool | isDeferrable, | ||
| bool | isDeferred, | ||
| bool | isEnforced, | ||
| bool | isValidated, | ||
| Oid | parentConstrId, | ||
| Oid | relId, | ||
| const int16 * | constraintKey, | ||
| int | constraintNKeys, | ||
| int | constraintNTotalKeys, | ||
| Oid | domainId, | ||
| Oid | indexRelId, | ||
| Oid | foreignRelId, | ||
| const int16 * | foreignKey, | ||
| const Oid * | pfEqOp, | ||
| const Oid * | ppEqOp, | ||
| const Oid * | ffEqOp, | ||
| int | foreignNKeys, | ||
| char | foreignUpdateType, | ||
| char | foreignDeleteType, | ||
| const int16 * | fkDeleteSetCols, | ||
| int | numFkDeleteSetCols, | ||
| char | foreignMatchType, | ||
| const Oid * | exclOp, | ||
| Node * | conExpr, | ||
| const char * | conBin, | ||
| bool | conIsLocal, | ||
| int16 | conInhCount, | ||
| bool | conNoInherit, | ||
| bool | conPeriod, | ||
| bool | is_internal | ||
| ) |
Definition at line 51 of file pg_constraint.c.
References add_exact_object_address(), Assert, BoolGetDatum(), CatalogTupleInsert(), CharGetDatum(), ObjectAddress::classId, construct_array_builtin(), CStringGetTextDatum, DEPENDENCY_AUTO, DEPENDENCY_NORMAL, fb(), free_object_addresses(), GetNewOidWithIndex(), heap_form_tuple(), i, Int16GetDatum(), InvokeObjectPostCreateHookArg, Max, NameGetDatum(), namestrcpy(), new_object_addresses(), ObjectAddressSet, ObjectAddressSubSet, ObjectIdGetDatum(), OidIsValid, palloc(), PointerGetDatum(), record_object_address_dependencies(), recordDependencyOnSingleRelExpr(), RelationGetDescr, RowExclusiveLock, table_close(), table_open(), and values.
Referenced by addFkConstraint(), CreateTriggerFiringOn(), domainAddCheckConstraint(), domainAddNotNullConstraint(), index_constraint_create(), StoreRelCheck(), and StoreRelNotNull().
| void DeconstructFkConstraintRow | ( | HeapTuple | tuple, |
| int * | numfks, | ||
| AttrNumber * | conkey, | ||
| AttrNumber * | confkey, | ||
| Oid * | pf_eq_oprs, | ||
| Oid * | pp_eq_oprs, | ||
| Oid * | ff_eq_oprs, | ||
| int * | num_fk_del_set_cols, | ||
| AttrNumber * | fk_del_set_cols | ||
| ) |
Definition at line 1521 of file pg_constraint.c.
References ARR_DATA_PTR, ARR_DIMS, ARR_ELEMTYPE, ARR_HASNULL, ARR_NDIM, DatumGetArrayTypeP, DatumGetPointer(), elog, ERROR, fb(), INDEX_MAX_KEYS, pfree(), SysCacheGetAttr(), and SysCacheGetAttrNotNull().
Referenced by CloneFkReferenced(), CloneFkReferencing(), DetachPartitionFinalize(), RelationGetFKeyList(), and ri_LoadConstraintInfo().
| AttrNumber extractNotNullColumn | ( | HeapTuple | constrTup | ) |
Definition at line 702 of file pg_constraint.c.
References ARR_DATA_PTR, ARR_DIMS, ARR_ELEMTYPE, ARR_HASNULL, ARR_NDIM, Assert, DatumGetArrayTypeP, elog, ERROR, fb(), GETSTRUCT(), and SysCacheGetAttrNotNull().
Referenced by ATExecAlterConstrInheritability(), CheckNNConstraintFetch(), dropconstraint_internal(), findNotNullConstraintAttnum(), MergeConstraintsIntoExisting(), pg_get_constraintdef_worker(), QueueNNConstraintValidation(), RelationGetNotNullConstraints(), and RemoveInheritance().
Definition at line 658 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, fb(), GETSTRUCT(), heap_copytuple(), HeapTupleIsValid, ObjectIdGetDatum(), ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by AlterDomainNotNull().
| void FindFKPeriodOpers | ( | Oid | opclass, |
| Oid * | containedbyoperoid, | ||
| Oid * | aggedcontainedbyoperoid, | ||
| Oid * | intersectoperoid | ||
| ) |
Definition at line 1651 of file pg_constraint.c.
References COMPARE_CONTAINED_BY, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, fb(), get_opclass_opfamily_and_input_type(), GetOperatorFromCompareType(), and InvalidOid.
Referenced by ATAddForeignKeyConstraint(), and ri_LoadConstraintInfo().
Definition at line 642 of file pg_constraint.c.
References attnum, fb(), findNotNullConstraintAttnum(), get_attnum(), and InvalidAttrNumber.
Referenced by ATExecAlterConstrInheritability(), ATPrepAddPrimaryKey(), dropconstraint_internal(), and QueueNNConstraintValidation().
| HeapTuple findNotNullConstraintAttnum | ( | Oid | relid, |
| AttrNumber | attnum | ||
| ) |
Definition at line 592 of file pg_constraint.c.
References AccessShareLock, attnum, BTEqualStrategyNumber, extractNotNullColumn(), fb(), GETSTRUCT(), heap_copytuple(), HeapTupleIsValid, ObjectIdGetDatum(), ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by AdjustNotNullInheritance(), ATExecAddIdentity(), ATExecDropNotNull(), ATExecSetNotNull(), findNotNullConstraint(), and MergeAttributesIntoExisting().
Definition at line 1376 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, CStringGetDatum(), ereport, errcode(), errmsg(), ERROR, fb(), format_type_be(), GETSTRUCT(), HeapTupleIsValid, InvalidOid, ObjectIdGetDatum(), OidIsValid, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by get_object_address(), and rename_constraint_internal().
Definition at line 1435 of file pg_constraint.c.
References AccessShareLock, ARR_DATA_PTR, ARR_DIMS, ARR_ELEMTYPE, ARR_HASNULL, ARR_NDIM, bms_add_member(), BTEqualStrategyNumber, DatumGetArrayTypeP, elog, ERROR, fb(), FirstLowInvalidHeapAttributeNumber, GETSTRUCT(), heap_getattr(), HeapTupleIsValid, i, InvalidOid, ObjectIdGetDatum(), RelationGetDescr, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by check_functional_grouping().
| Bitmapset * get_relation_constraint_attnos | ( | Oid | relid, |
| const char * | conname, | ||
| bool | missing_ok, | ||
| Oid * | constraintOid | ||
| ) |
Definition at line 1240 of file pg_constraint.c.
References AccessShareLock, ARR_DATA_PTR, ARR_DIMS, ARR_ELEMTYPE, ARR_HASNULL, ARR_NDIM, bms_add_member(), BTEqualStrategyNumber, CStringGetDatum(), DatumGetArrayTypeP, elog, ereport, errcode(), errmsg(), ERROR, fb(), FirstLowInvalidHeapAttributeNumber, get_rel_name(), GETSTRUCT(), heap_getattr(), HeapTupleIsValid, i, InvalidOid, ObjectIdGetDatum(), OidIsValid, RelationGetDescr, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by transformOnConflictArbiter().
Definition at line 1183 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, CStringGetDatum(), ereport, errcode(), errmsg(), ERROR, fb(), get_rel_name(), GETSTRUCT(), HeapTupleIsValid, InvalidOid, ObjectIdGetDatum(), OidIsValid, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by expandTableLikeClause(), get_object_address_relobject(), rename_constraint_internal(), and transformTableLikeClause().
Definition at line 1329 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, fb(), GETSTRUCT(), InvalidOid, ObjectIdGetDatum(), ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by ATExecAttachPartitionIdx(), AttachPartitionEnsureIndexes(), DefineIndex(), and DetachPartitionFinalize().
Definition at line 817 of file pg_constraint.c.
References AccessShareLock, BTEqualStrategyNumber, Constraint::conname, CONSTR_NOTNULL, Constraint::contype, Constraint::deferrable, extractNotNullColumn(), fb(), get_attname(), GETSTRUCT(), HeapTupleIsValid, Constraint::initdeferred, Constraint::initially_valid, Constraint::is_enforced, Constraint::is_no_inherit, Constraint::keys, lappend(), list_make1, Constraint::location, makeNode, makeString(), NameStr, NIL, ObjectIdGetDatum(), palloc_object, pstrdup(), ScanKeyInit(), Constraint::skip_validation, systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().
Referenced by createTableConstraints(), MergeAttributes(), and transformTableLikeClause().
Definition at line 895 of file pg_constraint.c.
References AccessExclusiveLock, CatalogTupleDelete(), CatalogTupleUpdate(), elog, ERROR, fb(), GETSTRUCT(), heap_freetuple(), HeapTupleIsValid, NoLock, ObjectIdGetDatum(), OidIsValid, RelationGetRelationName, ReleaseSysCache(), RowExclusiveLock, SearchSysCache1(), SearchSysCacheCopy1, table_close(), table_open(), and WARNING.
Referenced by doDeletion().
Definition at line 988 of file pg_constraint.c.
References CatalogTupleUpdate(), CONSTRAINT_DOMAIN, CONSTRAINT_RELATION, ConstraintNameIsUsed(), elog, ereport, errcode(), ERRCODE_DUPLICATE_OBJECT, errmsg(), ERROR, fb(), format_type_be(), get_rel_name(), GETSTRUCT(), heap_freetuple(), HeapTupleIsValid, InvokeObjectPostAlterHook, namestrcpy(), ObjectIdGetDatum(), OidIsValid, RowExclusiveLock, SearchSysCacheCopy1, HeapTupleData::t_self, table_close(), and table_open().
Referenced by rename_constraint_internal(), and RenameRelationInternal().