aboutsummaryrefslogtreecommitdiff
path: root/src/include/replication/origin.h
diff options
context:
space:
mode:
authorPeter Geoghegan <pg@bowt.ie>2025-05-07 15:20:42 -0400
committerPeter Geoghegan <pg@bowt.ie>2025-05-07 15:20:42 -0400
commit5f4d98d4f3718cf7a0597c37f3ee4a4485de6ef8 (patch)
treeb635f978d9fb77102b8a7b67d249dc3e7c1f46c9 /src/include/replication/origin.h
parent7e25c9363a82b6974c1ca2303ae8ded98af3bb24 (diff)
downloadpostgresql-5f4d98d4f3718cf7a0597c37f3ee4a4485de6ef8.tar.gz
postgresql-5f4d98d4f3718cf7a0597c37f3ee4a4485de6ef8.zip
Prevent premature nbtree array advancement.
nbtree array index scans could fail to return matching tuples in rare cases where the missed tuples cover key space that the scan's arrays incorrectly indicate has already been read. These cases involved nearby tuples with NULL values that were evaluated using a skip array key while in pstate.forcenonrequired mode. To fix, prevent forcenonrequired mode from prematurely advancing the scan's array keys beyond key space that the scan has yet to read tuples from: reset the scan's array keys (to the first elements in the current scan direction) before the _bt_checkkeys call for pstate.finaltup. That way _bt_checkkeys starts from a clean slate, which ensures that it will call _bt_advance_array_keys (while passing it sktrig_required=true). This reliably restores the invariant that the scan's arrays always accurately track its progress through the index's key space (at least when the scan is "between pages"). Oversight in commit 8a510275, which optimized nbtree search scan key comparisons. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-By: Mark Dilger <mark.dilger@enterprisedb.com> Discussion: https://postgr.es/m/CAH2-WzmodSE+gpTd1CRGU9ez8ytyyDS+Kns2r9NzgUp1s56kpw@mail.gmail.com
Diffstat (limited to 'src/include/replication/origin.h')
0 files changed, 0 insertions, 0 deletions