On Wed, Jul 17, 2013 at 7:11 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Kevin Grittner <kgrittn@postgresql.org> writes:
>> Add support for REFRESH MATERIALIZED VIEW CONCURRENTLY.
>
> The buildfarm members that use -DCLOBBER_CACHE_ALWAYS say this patch
> is broken.
>
Looks like rd_indpred is not correct if index relation is fresh.
Something like this works for me.
diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c
index edd34ff..46149ee 100644
--- a/src/backend/commands/matview.c
+++ b/src/backend/commands/matview.c
@@ -634,7 +634,7 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
/* Skip partial indexes. */ indexRel = index_open(index->indexrelid,
RowExclusiveLock);
- if (indexRel->rd_indpred != NIL)
+ if (RelationGetIndexPredicate(indexRel) != NIL) {
index_close(indexRel, NoLock); ReleaseSysCache(indexTuple);
--
Hitoshi Harada