From: Alvaro Herrera Date: Fri, 19 Jan 2018 19:34:44 +0000 (-0300) Subject: Fix CompareIndexInfo's attnum comparisons X-Git-Tag: REL_11_BETA1~916 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f17fd6fc7125b41218bc99ccfa8165e2d730cd9;p=postgresql Fix CompareIndexInfo's attnum comparisons When an index column is an expression, it makes no sense to compare its attribute numbers. This seems to account for remaining buildfarm fallout from 8b08f7d4820f. At least, it solves the issue in my local 32bit VM -- let's see what the rest thinks. --- diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index f0223416ad..849a469127 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -1795,8 +1795,10 @@ CompareIndexInfo(IndexInfo *info1, IndexInfo *info2, if (maplen < info2->ii_KeyAttrNumbers[i]) elog(ERROR, "incorrect attribute map"); - if (attmap[info2->ii_KeyAttrNumbers[i] - 1] != - info1->ii_KeyAttrNumbers[i]) + /* ignore expressions at this stage */ + if ((info1->ii_KeyAttrNumbers[i] != InvalidAttrNumber) && + (attmap[info2->ii_KeyAttrNumbers[i] - 1] != + info1->ii_KeyAttrNumbers[i])) return false; if (collations1[i] != collations2[i])