|From:||Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>|
|To:||James Coleman <jtc331(at)gmail(dot)com>|
|Cc:||Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>|
|Subject:||Re: remove spurious CREATE INDEX CONCURRENTLY wait|
|Views:||Raw Message | Whole Thread | Download mbox | Resend email|
On 2020-Aug-11, James Coleman wrote:
> In  I'd brought up that a function index can do arbitrary
> operations (including, terribly, a query of another table), and Andres
> (in ) noted that:
> > Well, even if we consider this an actual problem, we could still use
> > PROC_IN_CIC for non-expression non-partial indexes (index operator
> > themselves better ensure this isn't a problem, or they're ridiculously
> > broken already - they can get called during vacuum).
> But went on to describe how this is a problem with all expression
> indexes (even if those expressions don't do dangerous things) because
> of syscache lookups, but that ideally for expression indexes we'd have
> a way to use a different (or more frequently taken) snapshot for the
> purpose of computing those expressions. That's a significantly more
> involved patch though.
So the easy first patch here is to add the flag as PROC_IN_SAFE_CIC,
which is set only for CIC when it's used for indexes that are neither
on expressions nor partial. Then ignore those in WaitForOlderSnapshots.
The attached patch does it that way. (Also updated per recent
I did not set the flag in REINDEX CONCURRENTLY, but as I understand it
can be done too, since in essence it's the same thing as a CIC from a
snapshot management point of view.
Also, per , ISTM this flag could be used to tell lazy VACUUM to
ignore the Xmin of this process too, which the previous formulation
(where all CICs were so marked) could not. This patch doesn't do that
yet, but it seems the natural next step to take.
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
|Next Message||Pavel Stehule||2020-08-19 18:50:56||Re: Problem with accessing TOAST data in stored procedures|
|Previous Message||Alvaro Herrera||2020-08-19 18:06:12||Re: Creating foreign key on partitioned table is too slow|