diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 5d73e92901..0002816fcc 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -1831,6 +1831,10 @@ CompareIndexInfo(IndexInfo *info1, IndexInfo *info2, if (info1->ii_NumIndexAttrs != info2->ii_NumIndexAttrs) return false; + /* and same number of key attributes */ + if (info1->ii_NumIndexKeyAttrs != info2->ii_NumIndexKeyAttrs) + return false; + /* * and columns match through the attribute map (actual attribute numbers * might differ!) Note that this implies that index columns that are @@ -1850,7 +1854,9 @@ CompareIndexInfo(IndexInfo *info1, IndexInfo *info2, if (collations1[i] != collations2[i]) return false; - if (opfamilies1[i] != opfamilies2[i]) + + /* opfamily is valid on for key attributes */ + if (i < info2->ii_NumIndexKeyAttrs && opfamilies1[i] != opfamilies2[i]) return false; }