Re: Expanding HOT updates for expression and partial indexes

From: "Greg Burd" <greg(at)burd(dot)me>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: "Jeff Davis" <pgsql(at)j-davis(dot)com>
Subject: Re: Expanding HOT updates for expression and partial indexes
Date: 2026-02-23 19:23:39
Message-ID: bce13827-5f98-4d79-b779-ac5fff2b7668@app.fastmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello.

Attached is a new patch set that fixes a few issues identified in the last set.

0001 - creates a new way to identify the set of attributes both modified by the update and referenced by one or more indexes on the target relation being updated. This patch keeps the HeapDetermineColumnsInfo() path within heap_update() for calls from simple_heap_update() when modified_attrs_valid is set to false. I'm not a huge fan of this, but it does serve as a way to illustrate a minimal set of changes easing review a bit.

0002 - splits out the top portion of heap_update() into both heapam_tuple_update() and simple_heap_update(), adds a few helper functions and tries to reduce repeated code. The goal here was to remove some of the mess related to the various bitmaps used to make decisions during the update.

Performance tests so far haven't shown a regression of note for this set of changes.

I'm still working on:
a) cleaning this up a bit more
b) create ExecCheckUpdateRequiresReplicaId() in executor
c) look for a way to cleanly pass/maintain per-table AM state during update
d) root cause for difference in tests
e) look into UPDATE WHERE > 1 row performance

best.

-greg

Attachment Content-Type Size
v20260226-0001-Idenfity-modified-indexed-attributes-in-th.patch text/x-patch 29.7 KB
v20260226-0002-Refactor-heap_update-and-move-attribute-de.patch text/x-patch 61.6 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2026-02-23 19:27:07 Re: Don't synchronously wait for already-in-progress IO in read stream
Previous Message Jacob Champion 2026-02-23 19:22:22 Re: Add ssl_(supported|shared)_groups to sslinfo