Re: BitmapHeapScan streaming read user and prelim refactoring - Mailing list pgsql-hackers

From Richard Guo
Subject Re: BitmapHeapScan streaming read user and prelim refactoring
Date
Msg-id CAMbWs4859JX2-QnsNbgrMfiUSz+vV=poiVmj2rUyU-fB6oNHjA@mail.gmail.com
Whole thread Raw
In response to Re: BitmapHeapScan streaming read user and prelim refactoring  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: BitmapHeapScan streaming read user and prelim refactoring
List pgsql-hackers
On Thu, Dec 19, 2024 at 6:15 PM Richard Guo <guofenglinux@gmail.com> wrote:
> I think we need to check whether rs_tbmiterator is NULL before calling
> tbm_end_iterate on it, like below.
>
> --- a/src/backend/executor/nodeBitmapHeapscan.c
> +++ b/src/backend/executor/nodeBitmapHeapscan.c
> @@ -572,9 +572,11 @@ ExecReScanBitmapHeapScan(BitmapHeapScanState *node)
>     if (scan)
>     {
>         /*
> -        * End iteration on iterators saved in scan descriptor.
> +        * End iteration on iterators saved in scan descriptor, if they
> +        * haven't already been cleaned up.
>          */
> -       tbm_end_iterate(&scan->st.rs_tbmiterator);
> +       if (!tbm_exhausted(&scan->st.rs_tbmiterator))
> +           tbm_end_iterate(&scan->st.rs_tbmiterator);
>
>         /* rescan to release any page pin */
>         table_rescan(node->ss.ss_currentScanDesc, NULL);

This change may also be needed in ExecEndBitmapHeapScan().

Thanks
Richard



pgsql-hackers by date:

Previous
From: Bertrand Drouvot
Date:
Subject: Re: Removing the pgstat_flush_io() call from the walwriter
Next
From: Melanie Plageman
Date:
Subject: Re: BitmapHeapScan streaming read user and prelim refactoring