diff options
Diffstat (limited to 'src/backend/catalog/pg_constraint.c')
-rw-r--r-- | src/backend/catalog/pg_constraint.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index 7cd105928c3..d4e06a17e00 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.8 2002/11/15 02:50:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.9 2002/12/06 03:28:27 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -199,6 +199,7 @@ CreateConstraintEntry(const char *constraintName, domobject.classId = RelOid_pg_type; domobject.objectId = domainId; + domobject.objectSubId = 0; recordDependencyOn(&conobject, &domobject, DEPENDENCY_AUTO); } @@ -496,15 +497,16 @@ RemoveConstraintById(Oid conId) HeapTuple typTup; ScanKeyData typKey[1]; SysScanDesc typScan; + int nkeys = 0; typRel = heap_openr(TypeRelationName, RowExclusiveLock); - ScanKeyEntryInitialize(&typKey[0], 0x0, - Anum_pg_constraint_contypid, F_OIDEQ, + ScanKeyEntryInitialize(&typKey[nkeys++], 0x0, + ObjectIdAttributeNumber, F_OIDEQ, ObjectIdGetDatum(con->contypid)); typScan = systable_beginscan(typRel, TypeOidIndex, true, - SnapshotNow, 1, typKey); + SnapshotNow, nkeys, typKey); typTup = systable_getnext(typScan); @@ -517,6 +519,11 @@ RemoveConstraintById(Oid conId) /* Keep lock on domain type until end of xact */ heap_close(typRel, NoLock); } + else + { + elog(ERROR, "RemoveConstraintById: Constraint %u is not a known type", + conId); + } /* Fry the constraint itself */ simple_heap_delete(conDesc, &tup->t_self); |