Re: Parallel bitmap heap scan

Haribabu Kommi <kommi.haribabu@gmail.com>

From: Haribabu Kommi <kommi.haribabu@gmail.com>
To: Dilip Kumar <dilipbalaut@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Rafia Sabih <rafia.sabih@enterprisedb.com>, tushar <tushar.ahuja@enterprisedb.com>, Amit Khandekar <amitdkhan.pg@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Andres Freund <andres@anarazel.de>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-01-23T08:22:54Z
Lists: pgsql-hackers
On Mon, Jan 23, 2017 at 3:42 PM, Dilip Kumar <dilipbalaut@gmail.com> wrote:

> On Thu, Jan 19, 2017 at 12:26 AM, Robert Haas <robertmhaas@gmail.com>
> wrote:
> >> Patch 0001 and 0003 required to rebase on the latest head. 0002 is
> >> still the same.
> >
> > I've committed the first half of 0001.
> Thanks.  0001 and 0003 required rebasing after this commit.


I reviewed 0002-hash-support-alloc-free-v12.patch, some minor comments.

- SH_TYPE    *tb;
- uint64 size;
+ SH_TYPE     *tb;
+ uint64 size;

The above change may not be required.

+ if (tb->alloc)
+ {
+ tb->alloc->HashFree(tb->data, tb->alloc->args);
+ pfree(tb->alloc);
+ }

The above code tries to free the tb->alloc memory. In case if the user
has provide the alloc structure to SH_CREATE function and the same
pointer is stored in the tb structure. And in free function freeing that
memory may cause problem.

So either explicitly mentioning that the input must a palloc'ed data or
by default allocate memory and copy the input data into allocated
memory.

Regards,
Hari Babu
Fujitsu Australia

Commits

  1. Pass DSA_ALLOC_HUGE when allocating a shared TIDBitmap.

  2. Support parallel bitmap heap scans.

  3. tidbitmap: Support shared iteration.

  4. Shut down Gather's children before shutting down Gather itself.

  5. Revise the way the element allocator for a simplehash is specified.

  6. Refactor bitmap heap scan estimation of heap pages fetched.

  7. Use more efficient hashtable for tidbitmap.c to speed up bitmap scans.