Re: Feature: triggers on materialized views - Mailing list pgsql-hackers

From Mitar
Subject Re: Feature: triggers on materialized views
Date
Msg-id CAKLmikMCMPUcpzG8b8eczw-K00Rxd1j0uS=N2NHSjk+6y_94xA@mail.gmail.com
Whole thread Raw
In response to Re: Feature: triggers on materialized views  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: Feature: triggers on materialized views
List pgsql-hackers
Hi!

On Tue, Dec 25, 2018 at 7:05 PM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
> But then I'm not clear *why* you would like to do a non-concurrent
> refresh.

I mostly wanted to support if for two reasons:

- completeness: maybe we cannot imagine the use case yet, but somebody
might in the future
- getting trigger calls for initial inserts: you can then create
materialized view without data, attach triggers, and then run a
regular refresh; this allows you to have only one code path to process
any (including initial) changes to the view through notifications,
instead of handling initial data differently

> Maybe your situation would be best served by forbidding non-
> concurrent refresh when the MV contains any triggers.

If this would be acceptable by the community, I could do it. I worry
though that one could probably get themselves into a situation where
materialized view losses all data through some WITH NO DATA operation
and concurrent refresh is not possible. Currently concurrent refresh
works only with data. We could make concurrent refresh also work when
materialized view has no data easily (it would just insert data and
not compute diff).

> Alternatively, maybe reimplement non-concurrent refresh so that it works
> identically to concurrent refresh (except with a stronger lock).  Not
> sure if this implies any performance penalties.

Ah, yes. I could just do TRUNCATE and INSERT, instead of heap swap.
That would then generate reasonable trigger calls.

Are there any existing benchmarks for such operations I could use to
see if there are any performance changes if I change implementation
here? Any guidelines how to evaluate this?


Mitar

-- 
http://mitar.tnode.com/
https://twitter.com/mitar_m


pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Feature: triggers on materialized views
Next
From: "Nagaura, Ryohei"
Date:
Subject: RE: Timeout parameters