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);
 }
 
 /*
