Hello Peter,
20.07.2026 02:23, Peter Geoghegan wrote:
Attached patches add an isolation test to the nbtree test module,
which uses injection points. This provides thorough test coverage for
nbtree backwards scans, including cases where we must recover from
concurrent page splits, and page deletions by VACUUM.
The new backwards-scan-concurrent-splits test has failed a couple of times
so far: [1], [2]:
# ---
/mnt/build/HEAD/pgsql/src/test/modules/nbtree/expected/backwards-scan-concurrent-splits.out
# +++
/mnt/build/HEAD/pgsql.build/src/test/modules/nbtree/output_iso/results/backwards-scan-concurrent-splits.out
# @@ -208,7 +208,6 @@
#
# (1 row)
#
# -scan_session: NOTICE: notice triggered for injection point
nbtree-walk-left-step-right
# step b_scan: <... completed>
# col
# ---
not ok 1 - backwards-scan-concurrent-splits 310 ms
ok 2 - predicate-empty-index 214 ms
1..2
# 1 of 2 tests failed.
Looks like it is not immune to autovacuum. I've reproduced this locally with:
--- a/src/test/modules/nbtree/Makefile
+++ b/src/test/modules/nbtree/Makefile
@@ -8 +8 @@ REGRESS = nbtree_half_dead_pages \
-ISOLATION = backwards-scan-concurrent-splits \
+ISOLATION = $(shell printf 'backwards-scan-concurrent-splits %.0s' `seq 100`) \
and
echo "autovacuum_naptime=1s" >/tmp/extra.config
TEMP_CONFIG=/tmp/extra.config make -s check -C src/test/modules/nbtree
...
ok 17 - backwards-scan-concurrent-splits 160 ms
# diff -U3 .../src/test/modules/nbtree/expected/backwards-scan-concurrent-splits.out
.../src/test/modules/nbtree/output_iso/results/backwards-scan-concurrent-splits.out
# --- .../src/test/modules/nbtree/expected/backwards-scan-concurrent-splits.out
2026-07-28 22:26:18.306287159 +0300
# +++ .../src/test/modules/nbtree/output_iso/results/backwards-scan-concurrent-splits.out 2026-07-29 07:26:51.016349487
+0300
# @@ -277,8 +277,6 @@
#
# (1 row)
#
# -scan_session: NOTICE: notice triggered for injection point
nbtree-walk-left-deleted
# -scan_session: NOTICE: notice triggered for injection point
nbtree-walk-left-restart
# step b_scan_999: <... completed>
# col
# ---
not ok 18 - backwards-scan-concurrent-splits 162 ms
ok 19 - backwards-scan-concurrent-splits 165 ms
...
ok 99 - backwards-scan-concurrent-splits 168 ms
ok 100 - backwards-scan-concurrent-splits 160 ms
ok 101 - predicate-empty-index 104 ms
1..101
# 8 of 101 tests failed.
Could you please have a look?
[1]
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=jay&dt=2026-07-28%2021%3A00%3A31
[2]
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=basilisk&dt=2026-07-26%2006%3A58%3A54
Best regards,
Alexander