diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 1db4ba84..d072031 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -282,6 +282,7 @@ static OpClassCacheEnt *LookupOpclassInfo(Oid operatorClassOid, StrategyNumber numSupport); static void RelationCacheInitFileRemoveInDir(const char *tblspcpath); static void unlink_initfile(const char *initfilename); +static int constrcheck_cmp(const void *p1, const void *p2); /* @@ -3734,6 +3735,20 @@ CheckConstraintFetch(Relation relation) if (found != ncheck) elog(ERROR, "%d constraint record(s) missing for rel %s", ncheck - found, RelationGetRelationName(relation)); + + qsort((void *) check, ncheck, sizeof(ConstrCheck), constrcheck_cmp); +} + +/* + * ConstrCheck qsort/bsearch comparator. + */ +static int +constrcheck_cmp(const void *p1, const void *p2) +{ + ConstrCheck c1 = *(ConstrCheck *) p1; + ConstrCheck c2 = *(ConstrCheck *) p2; + + return strcmp(c1.ccname, c2.ccname); } /*