On Thu, Mar 9, 2017 at 10:02 PM, Dilip Kumar <dilipbal...@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.

Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to