Hi,

On May 18, 2019 11:55:01 AM PDT, Tom Lane <t...@sss.pgh.pa.us> wrote:
>I wrote:
>> Sergei Kornilov <s...@zsrv.org> writes:
>>> I can reproduce with:
>>> set default_transaction_isolation TO serializable ;
>>> analyze ;
>
>> So the problem is that something is passing a null snapshot to
>something
>> that isn't expecting that.  This seems closely related to the tableam
>> API issue that was being debated a day or two back about whether it's
>> ever valid to hand a null snapshot to an AM.  Andres, which layer do
>> you think is at fault here?

Not quite - that was about the DML callbacks, this is about the scan itself. 
And while we have a snapshot allocated, the analyze version of the beginscan 
intentionally doesn't take a snapshot.

>Bisecting confirms that this broke at
>
>commit 737a292b5de296615a715ddce2b2d83d1ee245c5
>Author: Andres Freund <and...@anarazel.de>
>Date:   Sat Mar 30 16:21:09 2019 -0700
>
>    tableam: VACUUM and ANALYZE support.
>
>I'd thought possibly this had something to do with bb16aba50 (Enable
>parallel query with SERIALIZABLE isolation) but the bisection result
>makes it pretty clear that it's just a tableam API screwup.

I'm not yet at my computer, but I think all that's needed is to expand the 
check that prevents the predicate lock to be acquired for heap type scans to 
the analyze case. I'll check it in a few.

Andres
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


Reply via email to