Review observations for partial REFRESH MATERIALIZED VIEW patc
Hello hackers,
I reviewed the REFRESH MATERIALIZED VIEW ... WHERE patch and had a few
questions around concurrency semantics.
- The original DELETE -> INSERT approach exposing a consistency gap
makes sense, especially once tuple locks disappear after DELETE. The newer
FOR UPDATE + single-CTE approach seems safer, though I wonder whether
overlapping refreshes could still encounter deadlock scenarios around
UPSERT conflicts.
- The CONCURRENTLY behavior also feels somewhat unintuitive here. With
WHERE refreshes, the non-CONCURRENT path appears more permissive for
writers than CONCURRENTLY WHERE, which seems opposite to the expectation
established by normal REFRESH MATERIALIZED VIEW semantics.
- It may also help to document the intended guarantees around
overlapping partial refreshes and concurrent DML on base tables.
Overall, the use case seems quite valuable for selective high-churn refresh
workloads.
Thanks for working on this patch.
Regards,
Vellaipandiyan
On 5/19/26 7:42 AM, vellaipandiyan sm wrote:
I reviewed the REFRESH MATERIALIZED VIEW ... WHERE patch and had a few
questions around concurrency semantics.* The original DELETE -> INSERT approach exposing a consistency gap
makes sense, especially once tuple locks disappear after DELETE. The
newer FOR UPDATE + single-CTE approach seems safer, though I wonder
whether overlapping refreshes could still encounter deadlock
scenarios around UPSERT conflicts.
* The CONCURRENTLY behavior also feels somewhat unintuitive here. With
WHERE refreshes, the non-CONCURRENT path appears more permissive for
writers than CONCURRENTLY WHERE, which seems opposite to the
expectation established by normal REFRESH MATERIALIZED VIEW semantics.
* It may also help to document the intended guarantees around
overlapping partial refreshes and concurrent DML on base tables.
Hi,
Thanks for the review, but please reply-all to the original thread when
you review a patch so the original author and previous reviewers can see
your review.
If you do not have the original email thread you can go into the archive
and request it to be sent to you so you can reply to it.
You can click the "Resend email" link at
/messages/by-id/CAA4eK1KSEL+b81L47MpdVCY79n0QgboxF6XTEjSc0ZcLkDzyWQ@mail.gmail.com
--
Andreas Karlsson
Percona
On 5/19/26 11:59 AM, Andreas Karlsson wrote:
You can click the "Resend email" link at https://www.postgresql.org/
message-id/
CAA4eK1KSEL%2Bb81L47MpdVCY79n0QgboxF6XTEjSc0ZcLkDzyWQ%40mail.gmail.com
Sorry, somehow pasted the wrong link.
/messages/by-id/CAMjNa7d8f3sj-1ZsmsqiUPLzjXFtjOgeM7GFKvU_1EugyzJ5jw@mail.gmail.com
--
Andreas Karlsson
Percona