Re: [HACKERS] Parallel Bitmap scans a bit broken - Mailing list pgsql-hackers

From David Rowley
Subject Re: [HACKERS] Parallel Bitmap scans a bit broken
Date
Msg-id CAKJS1f_FR5AX5BBivAUR3WEz9a0vvXNHRFrRwFEfeeMVr9YBFA@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] Parallel Bitmap scans a bit broken  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
On 10 March 2017 at 06:17, Robert Haas <robertmhaas@gmail.com> wrote:
On Thu, Mar 9, 2017 at 11:50 AM, Dilip Kumar <dilipbalaut@gmail.com> wrote:
> On Thu, Mar 9, 2017 at 10:02 PM, Dilip Kumar <dilipbalaut@gmail.com> wrote:
>> I slightly modified your query to reproduce this issue.
>>
>> explain analyze select * from r1 where value<555;
>>
>> Patch is attached to fix the problem.
>
> I forgot to mention the cause of the problem.
>
> if (istate->schunkptr < istate->nchunks)
> {
>    PagetableEntry *chunk = &ptbase[idxchunks[istate->schunkptr]];
>     PagetableEntry *page = &ptbase[idxpages[istate->spageptr]];
>     BlockNumber chunk_blockno;
>
> In above if condition we have only checked istate->schunkptr <
> istate->nchunks that means we have some chunk left so we are safe to
> access idxchunks,  But just after that we are accessing
> ptbase[idxpages[istate->spageptr]] without checking that accessing
> idxpages is safe or not.
>
> tbm_iterator already handling this case, I broke it in tbm_shared_iterator.

I don't know if this is the only problem -- it would be good if David
could retest -- but it's certainly *a* problem, so committed.

Thanks for committing, and generally parallelising more stuff.

I confirm that my test case is now working again.

I'll be in this general area today, so will mention if I stumble over anything that looks broken. 

--
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] rename pg_log directory?
Next
From: Naytro Naytro
Date:
Subject: Re: [HACKERS] Performance issue after upgrading from 9.4 to 9.6