On Wed, Jun 16, 2021 at 9:29 PM Amit Langote <amitlangot...@gmail.com> wrote:
> On Wed, Jun 16, 2021 at 4:27 PM Amit Langote <amitlangot...@gmail.com> > wrote: > > On Mon, Jun 7, 2021 at 8:38 PM houzj.f...@fujitsu.com > > <houzj.f...@fujitsu.com> wrote: > > > The rough idea is to check the average batch number every 1000 rows. > > > If the average batch num is greater than 1, then we enable the cache > check, > > > if not, disable cache check. This is similar to what 0d5f05cde0 did. > > > > Thanks for sharing the idea and writing a patch for it. > > > > I considered a simpler heuristic where we enable/disable caching of a > > given offset if it is found by the binary search algorithm at least N > > consecutive times. But your idea to check the ratio of the number of > > tuples inserted over partition/bound offset changes every N tuples > > inserted may be more adaptive. > > > > Please find attached a revised version of your patch, where I tried to > > make it a bit easier to follow, hopefully. While doing so, I realized > > that caching the bound offset across queries makes little sense now, > > so I decided to keep the changes confined to execPartition.c. Do you > > have a counter-argument to that? > > Attached a slightly revised version of that patch, with a commit > message this time. > > -- > Amit Langote > EDB: http://www.enterprisedb.com Hi, + int n_tups_inserted; + int n_offset_changed; Since tuples appear in plural, maybe offset should be as well: offsets. + part_index = get_cached_list_partition(pd, boundinfo, key, + values); nit:either put values on the same line, or align the 4 parameters on different lines. + if (part_index < 0) + { + bound_offset = partition_range_datum_bsearch(key->partsupfunc, Do we need to check the value of equal before computing part_index ? Cheers