Re: Binary search in ScalarArrayOpExpr for OR'd constant arrays

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: James Coleman <jtc331(at)gmail(dot)com>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
Cc: David Rowley <dgrowleyml(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Binary search in ScalarArrayOpExpr for OR'd constant arrays
Date: 2020-08-19 07:16:17
Message-ID: 6f62a5c3-6bb3-dead-9e58-d7f3bb3c8e6f@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 01/05/2020 05:20, James Coleman wrote:
> On Tue, Apr 28, 2020 at 8:25 AM Tomas Vondra
> <tomas(dot)vondra(at)2ndquadrant(dot)com> wrote:
> ...
>> Any particular reasons to pick dynahash over simplehash? ISTM we're
>> using simplehash elsewhere in the executor (grouping, tidbitmap, ...),
>> while there are not many places using dynahash for simple short-lived
>> hash tables. Of course, that alone is a weak reason to insist on using
>> simplehash here, but I suppose there were reasons for not using dynahash
>> and we'll end up facing the same issues here.
>
> I've attached a patch series that includes switching to simplehash.
> Obviously we'd really just collapse all of these patches, but it's
> perhaps interesting to see the changes required to use each style
> (binary search, dynahash, simplehash).
>
> As before, there are clearly comments and naming things to be
> addressed, but the implementation should be reasonably clean.

Looks good, aside from the cleanup work that you mentioned. There are a
few more cases that I think you could easily handle with very little
extra code:

You could also apply the optimization for non-Const expressions, as long
as they're stable (i.e. !contain_volatile_functions(expr)).

Deconstructing the array Datum into a simple C array on first call would
be a win even for very small arrays and for AND semantics, even if you
don't use a hash table.

- Heikki

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Julien Rouhaud 2020-08-19 07:21:33 Re: [PG13] Planning (time + buffers) data structure in explain plan (format text)
Previous Message Amit Kapila 2020-08-19 06:49:48 Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions