Re: optimize lookups in snapshot [sub]xip arrays

From: John Naylor <john(dot)naylor(at)enterprisedb(dot)com>
To: Nathan Bossart <nathandbossart(at)gmail(dot)com>
Cc: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, John Naylor <jcnaylor(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: optimize lookups in snapshot [sub]xip arrays
Date: 2022-08-09 06:21:41
Message-ID: CAFBsxsFsrucH5BiP092u0KiAcs73DJZoBR2yz1n7Sm91ZamGPg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Aug 9, 2022 at 10:51 AM Nathan Bossart <nathandbossart(at)gmail(dot)com> wrote:
> Fixed in v10.

I decided I wasn't quite comfortable changing snapshot handling
without further guarantees. To this end, 0002 in the attached v11 is
an addendum that adds assert checking (also pgindent and some
comment-smithing). As I suspected, make check-world passes even with
purposefully screwed-up coding. 0003 uses pg_lfind32 in syscache.c and
I verified that sticking in the wrong answer will lead to a crash in
assert-enabled builds in short order. I'd kind of like to throw this
(or something else suitable) at the build farm first for that reason.
It's simpler than the qsort/qunique/binary search that was there
before, so that's nice, but I've not tried to test performance.

--
John Naylor
EDB: http://www.enterprisedb.com

Attachment Content-Type Size
v11-0002-Add-assert-checking-run-pgindent-comment-changes.patch text/x-patch 4.0 KB
v11-0004-Optimize-linear-searches-in-XidInMVCCSnapshot.patch text/x-patch 2.8 KB
v11-0001-Introduce-optimized-routine-for-linear-searches-.patch text/x-patch 3.1 KB
v11-0003-Use-optimized-linear-search-for-testing-if-relat.patch text/x-patch 3.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Rowley 2022-08-09 07:10:00 Re: [PoC] Reducing planning time when tables have many partitions
Previous Message Dilip Kumar 2022-08-09 05:39:27 Re: Perform streaming logical transactions by background workers and parallel apply