Kevin Grittner <kgrittn@ymail.com> schrieb:
>Andres Freund <andres@2ndquadrant.com> wrote:
>
>> if I understand things correctly REFRESH MATERIALIZED VIEW locks
>> the materialized view with an AcessExclusiveLock even if the view
>> already contains data.
>
>Yeah. At the time I had to make a decision on that, REINDEX
>CONCURRENTLY did not seem reliable with a weaker lock, and REFRESH
>MATERIALIZED VIEW has to rebuild indexes (among other things). If
>we have all the issues sorted out with REINDEX CONCURRENTLY then
>the same techniques will probably apply to RMV without too much
>difficulty. It's a bit late to think about that for 9.3, though.
>
>> I am pretty sure that will - understandably - confuse users, so I
>> vote for at least including a note about that in the docs.
>
>Will see about working that in.
In the ride home I realized that unless - not that unlikely - you thought about something I didtn't REFRESH will
behavesimilar to TRUNCATE for repeatable read+ transactions that only access it after REFRESH finished. That is, they
willappear empty. If that's the case, it needs to be documented prominently as well.
It would be possible to get different behaviour by immediately freezing all tuples, but that would also result in
violationsof visibility by showing tuples that are not yet visible.
Andres
---
Please excuse brevity and formatting - I am writing this on my mobile phone.