Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: postgresql-cfbot/postgresql
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: cf/5556~1
Choose a base ref
...
head repository: postgresql-cfbot/postgresql
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: cf/5556
Choose a head ref
  • 2 commits
  • 29 files changed
  • 2 contributors

Commits on Oct 30, 2025

  1. Expand HOT update path to include expression and partial indexes

    Expression indexes have historically been considered "hot blocking", but
    this choice significanly impares the utility of the JSONB data type as
    all indexes referencing data within documents are formed using
    expressions. Thus an update to a JSONB column will prevent the HOT path
    and force all indexes across all columns to be updated.
    
    Updates to attributes referenced by partial indexes may fall entirely
    outside of the range of values maintained by an index, but despite that
    they are effectively "HOT blocking".  This too is changed to allow for
    HOT updates in cases where the predicate on the index is not satisfied
    for either the old or the new tuple.
    
    It appears that the primary reason for not checking expression indexes
    or the expressions forming partial indexes, besides the overhead of the
    expression itself, was that the execution of expression could
    self-deadlock.  Here we are careful to hold the pin, but not the buffer
    lock when evaluating the expressions.  We are careful to only evaluate
    expressions when they are both in the modified set for the update and
    the modified attribute is only referenced by vars in those expressions.
    
    It is important to note that this patch was inspired by, but is a
    significant departure from, a previous patch.
    https://postgr.es/m/4d9928ee-a9e6-15f9-9c82-5981f13ffca6%40postgrespro.ru
    applied in c203d6c and later reverted
    in 05f84605dbeb9cf8279a157234b24bbb706c5256.
    
    Signed-off-by: Greg Burd <[email protected]>
    gburd authored and Commitfest Bot committed Oct 30, 2025
    Configuration menu
    Copy the full SHA
    ab49964 View commit details
    Browse the repository at this point in the history
  2. [CF 5556] v18 - Expanding HOT updates for expression and partial indexes

    This branch was automatically generated by a robot using patches from an
    email thread registered at:
    
    https://commitfest.postgresql.org/patch/5556
    
    The branch will be overwritten each time a new patch version is posted to
    the thread, and also periodically to check for bitrot caused by changes
    on the master branch.
    
    Patch(es): https://www.postgresql.org/message-id/[email protected]
    Author(s): Greg Burd
    Commitfest Bot committed Oct 30, 2025
    Configuration menu
    Copy the full SHA
    c2ae777 View commit details
    Browse the repository at this point in the history
Loading