=== Applying patches on top of PostgreSQL commit ID f20a347e1a613cfc9053e7bc3d254608ae968386 === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Mon Jun 30 15:05:23 UTC 2025 On branch cf/5614 nothing to commit, working tree clean === using 'git am' to apply patch ./0001-Add-separate-record-leaf-and-metadata-stats-for-inde.patch === Applying: Add separate record (leaf) and metadata stats for index buffers in the system views. Using index info to reconstruct a base tree... M contrib/amcheck/verify_gin.c M doc/src/sgml/monitoring.sgml M src/backend/access/brin/brin.c M src/backend/access/gin/ginbtree.c M src/backend/access/gist/gistutil.c M src/backend/access/gist/gistvacuum.c M src/backend/access/heap/heapam.c M src/backend/access/heap/heapam_handler.c M src/backend/access/heap/vacuumlazy.c M src/backend/access/nbtree/nbtree.c M src/backend/access/nbtree/nbtsearch.c M src/backend/access/nbtree/nbtutils.c M src/backend/access/spgist/spgvacuum.c M src/backend/catalog/system_views.sql M src/backend/storage/buffer/bufmgr.c M src/backend/utils/activity/pgstat_database.c M src/backend/utils/activity/pgstat_relation.c M src/backend/utils/adt/pgstatfuncs.c M src/include/access/nbtree.h M src/include/catalog/pg_proc.dat M src/test/modules/test_aio/test_aio.c Falling back to patching base and 3-way merge... Auto-merging src/test/modules/test_aio/test_aio.c Auto-merging src/include/catalog/pg_proc.dat Auto-merging src/include/access/nbtree.h Auto-merging src/backend/utils/adt/pgstatfuncs.c Auto-merging src/backend/utils/activity/pgstat_relation.c Auto-merging src/backend/utils/activity/pgstat_database.c Auto-merging src/backend/storage/buffer/bufmgr.c Auto-merging src/backend/catalog/system_views.sql Auto-merging src/backend/access/spgist/spgvacuum.c Auto-merging src/backend/access/nbtree/nbtutils.c CONFLICT (content): Merge conflict in src/backend/access/nbtree/nbtutils.c Auto-merging src/backend/access/nbtree/nbtsearch.c Auto-merging src/backend/access/nbtree/nbtree.c Auto-merging src/backend/access/heap/vacuumlazy.c Auto-merging src/backend/access/heap/heapam_handler.c Auto-merging src/backend/access/heap/heapam.c CONFLICT (content): Merge conflict in src/backend/access/heap/heapam.c Auto-merging src/backend/access/gist/gistvacuum.c Auto-merging src/backend/access/gist/gistutil.c Auto-merging src/backend/access/gin/ginbtree.c Auto-merging src/backend/access/brin/brin.c Auto-merging doc/src/sgml/monitoring.sgml Auto-merging contrib/amcheck/verify_gin.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch=diff' to see the failed patch Patch failed at 0001 Add separate record (leaf) and metadata stats for index buffers in the system views. When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Unstaged changes after reset: M contrib/amcheck/verify_gin.c M contrib/amcheck/verify_nbtree.c M contrib/bloom/blinsert.c M contrib/bloom/blscan.c M contrib/bloom/blutils.c M contrib/bloom/blvacuum.c M contrib/pageinspect/btreefuncs.c M contrib/pageinspect/rawpage.c M contrib/pg_surgery/heap_surgery.c M contrib/pg_visibility/pg_visibility.c M contrib/pgstattuple/pgstatapprox.c M contrib/pgstattuple/pgstatindex.c M contrib/pgstattuple/pgstattuple.c M doc/src/sgml/monitoring.sgml M src/backend/access/brin/brin.c M src/backend/access/brin/brin_pageops.c M src/backend/access/brin/brin_revmap.c M src/backend/access/gin/ginbtree.c M src/backend/access/gin/ginfast.c M src/backend/access/gin/ginget.c M src/backend/access/gin/ginutil.c M src/backend/access/gin/ginvacuum.c M src/backend/access/gist/gist.c M src/backend/access/gist/gistbuild.c M src/backend/access/gist/gistget.c M src/backend/access/gist/gistutil.c M src/backend/access/gist/gistvacuum.c M src/backend/access/hash/hash.c M src/backend/access/hash/hashpage.c M src/backend/access/heap/heapam.c M src/backend/access/heap/heapam_handler.c M src/backend/access/heap/hio.c M src/backend/access/heap/vacuumlazy.c M src/backend/access/heap/visibilitymap.c M src/backend/access/nbtree/nbtinsert.c M src/backend/access/nbtree/nbtpage.c M src/backend/access/nbtree/nbtree.c M src/backend/access/nbtree/nbtsearch.c M src/backend/access/nbtree/nbtutils.c M src/backend/access/spgist/spgdoinsert.c M src/backend/access/spgist/spgscan.c M src/backend/access/spgist/spgutils.c M src/backend/access/spgist/spgvacuum.c M src/backend/access/transam/xloginsert.c M src/backend/catalog/system_views.sql M src/backend/commands/sequence.c M src/backend/storage/aio/read_stream.c M src/backend/storage/buffer/bufmgr.c M src/backend/storage/freespace/freespace.c M src/backend/utils/activity/pgstat_database.c M src/backend/utils/activity/pgstat_relation.c M src/backend/utils/adt/pgstatfuncs.c M src/include/access/nbtree.h M src/include/catalog/pg_proc.dat M src/include/pgstat.h M src/include/storage/bufmgr.h M src/test/modules/test_aio/test_aio.c M src/test/regress/expected/rules.out M src/test/regress/expected/stats.out M src/test/regress/sql/stats.sql === using patch(1) to apply patch ./0001-Add-separate-record-leaf-and-metadata-stats-for-inde.patch === patching file contrib/amcheck/verify_gin.c Hunk #1 succeeded at 172 (offset -1 lines). Hunk #2 succeeded at 432 with fuzz 1 (offset -7 lines). Hunk #3 succeeded at 727 (offset -5 lines). patching file contrib/amcheck/verify_nbtree.c patching file contrib/bloom/blinsert.c patching file contrib/bloom/blscan.c patching file contrib/bloom/blutils.c patching file contrib/bloom/blvacuum.c patching file contrib/pageinspect/btreefuncs.c patching file contrib/pageinspect/rawpage.c patching file contrib/pg_surgery/heap_surgery.c patching file contrib/pg_visibility/pg_visibility.c patching file contrib/pgstattuple/pgstatapprox.c patching file contrib/pgstattuple/pgstatindex.c patching file contrib/pgstattuple/pgstattuple.c patching file doc/src/sgml/monitoring.sgml Hunk #1 succeeded at 3409 (offset 5 lines). Hunk #2 succeeded at 4413 (offset 9 lines). Hunk #3 succeeded at 4585 (offset 9 lines). patching file src/backend/access/brin/brin.c patching file src/backend/access/brin/brin_pageops.c patching file src/backend/access/brin/brin_revmap.c patching file src/backend/access/gin/ginbtree.c patching file src/backend/access/gin/ginfast.c patching file src/backend/access/gin/ginget.c patching file src/backend/access/gin/ginutil.c patching file src/backend/access/gin/ginvacuum.c patching file src/backend/access/gist/gist.c patching file src/backend/access/gist/gistbuild.c patching file src/backend/access/gist/gistget.c patching file src/backend/access/gist/gistutil.c patching file src/backend/access/gist/gistvacuum.c Hunk #1 succeeded at 492 (offset 1 line). Hunk #2 succeeded at 525 (offset 1 line). Hunk #3 succeeded at 591 (offset 1 line). patching file src/backend/access/hash/hash.c patching file src/backend/access/hash/hashpage.c patching file src/backend/access/heap/heapam.c Hunk #1 succeeded at 1607 (offset 21 lines). Hunk #2 succeeded at 1901 (offset 21 lines). Hunk #3 succeeded at 2803 (offset 27 lines). Hunk #4 FAILED at 3305. Hunk #5 succeeded at 4590 (offset 29 lines). Hunk #6 succeeded at 6086 (offset 29 lines). Hunk #7 succeeded at 6177 (offset 29 lines). Hunk #8 succeeded at 8268 (offset 37 lines). 1 out of 8 hunks FAILED -- saving rejects to file src/backend/access/heap/heapam.c.rej patching file src/backend/access/heap/heapam_handler.c patching file src/backend/access/heap/hio.c patching file src/backend/access/heap/vacuumlazy.c Hunk #1 succeeded at 3407 (offset -15 lines). patching file src/backend/access/heap/visibilitymap.c patching file src/backend/access/nbtree/nbtinsert.c patching file src/backend/access/nbtree/nbtpage.c patching file src/backend/access/nbtree/nbtree.c Hunk #1 succeeded at 1674 (offset 33 lines). patching file src/backend/access/nbtree/nbtsearch.c Hunk #1 succeeded at 131 (offset 5 lines). Hunk #2 succeeded at 184 (offset 5 lines). Hunk #3 succeeded at 256 (offset 5 lines). Hunk #4 succeeded at 307 (offset 5 lines). Hunk #5 succeeded at 2319 (offset 13 lines). Hunk #6 succeeded at 2367 (offset 13 lines). Hunk #7 succeeded at 2464 (offset 13 lines). Hunk #8 succeeded at 2495 (offset 13 lines). Hunk #9 succeeded at 2506 (offset 13 lines). Hunk #10 succeeded at 2524 (offset 13 lines). Hunk #11 succeeded at 2582 (offset 13 lines). Hunk #12 succeeded at 2615 (offset 13 lines). Hunk #13 succeeded at 2639 (offset 13 lines). patching file src/backend/access/nbtree/nbtutils.c Hunk #2 FAILED at 3319. Hunk #3 FAILED at 3347. 2 out of 3 hunks FAILED -- saving rejects to file src/backend/access/nbtree/nbtutils.c.rej patching file src/backend/access/spgist/spgdoinsert.c patching file src/backend/access/spgist/spgscan.c patching file src/backend/access/spgist/spgutils.c patching file src/backend/access/spgist/spgvacuum.c patching file src/backend/access/transam/xloginsert.c patching file src/backend/catalog/system_views.sql Hunk #1 succeeded at 766 (offset -5 lines). Hunk #2 succeeded at 783 (offset -5 lines). Hunk #3 succeeded at 850 (offset -5 lines). Hunk #4 succeeded at 1091 (offset -5 lines). patching file src/backend/commands/sequence.c patching file src/backend/storage/aio/read_stream.c patching file src/backend/storage/buffer/bufmgr.c patching file src/backend/storage/freespace/freespace.c patching file src/backend/utils/activity/pgstat_database.c patching file src/backend/utils/activity/pgstat_relation.c patching file src/backend/utils/adt/pgstatfuncs.c patching file src/include/access/nbtree.h Hunk #1 succeeded at 1272 (offset 1 line). patching file src/include/catalog/pg_proc.dat Hunk #1 succeeded at 5580 (offset 1 line). Hunk #2 succeeded at 5796 (offset 1 line). patching file src/include/pgstat.h patching file src/include/storage/bufmgr.h patching file src/test/modules/test_aio/test_aio.c patching file src/test/regress/expected/rules.out patching file src/test/regress/expected/stats.out patching file src/test/regress/sql/stats.sql Unstaged changes after reset: M contrib/amcheck/verify_gin.c M contrib/amcheck/verify_nbtree.c M contrib/bloom/blinsert.c M contrib/bloom/blscan.c M contrib/bloom/blutils.c M contrib/bloom/blvacuum.c M contrib/pageinspect/btreefuncs.c M contrib/pageinspect/rawpage.c M contrib/pg_surgery/heap_surgery.c M contrib/pg_visibility/pg_visibility.c M contrib/pgstattuple/pgstatapprox.c M contrib/pgstattuple/pgstatindex.c M contrib/pgstattuple/pgstattuple.c M doc/src/sgml/monitoring.sgml M src/backend/access/brin/brin.c M src/backend/access/brin/brin_pageops.c M src/backend/access/brin/brin_revmap.c M src/backend/access/gin/ginbtree.c M src/backend/access/gin/ginfast.c M src/backend/access/gin/ginget.c M src/backend/access/gin/ginutil.c M src/backend/access/gin/ginvacuum.c M src/backend/access/gist/gist.c M src/backend/access/gist/gistbuild.c M src/backend/access/gist/gistget.c M src/backend/access/gist/gistutil.c M src/backend/access/gist/gistvacuum.c M src/backend/access/hash/hash.c M src/backend/access/hash/hashpage.c M src/backend/access/heap/heapam.c M src/backend/access/heap/heapam_handler.c M src/backend/access/heap/hio.c M src/backend/access/heap/vacuumlazy.c M src/backend/access/heap/visibilitymap.c M src/backend/access/nbtree/nbtinsert.c M src/backend/access/nbtree/nbtpage.c M src/backend/access/nbtree/nbtree.c M src/backend/access/nbtree/nbtsearch.c M src/backend/access/nbtree/nbtutils.c M src/backend/access/spgist/spgdoinsert.c M src/backend/access/spgist/spgscan.c M src/backend/access/spgist/spgutils.c M src/backend/access/spgist/spgvacuum.c M src/backend/access/transam/xloginsert.c M src/backend/catalog/system_views.sql M src/backend/commands/sequence.c M src/backend/storage/aio/read_stream.c M src/backend/storage/buffer/bufmgr.c M src/backend/storage/freespace/freespace.c M src/backend/utils/activity/pgstat_database.c M src/backend/utils/activity/pgstat_relation.c M src/backend/utils/adt/pgstatfuncs.c M src/include/access/nbtree.h M src/include/catalog/pg_proc.dat M src/include/pgstat.h M src/include/storage/bufmgr.h M src/test/modules/test_aio/test_aio.c M src/test/regress/expected/rules.out M src/test/regress/expected/stats.out M src/test/regress/sql/stats.sql Removing src/backend/access/heap/heapam.c.rej Removing src/backend/access/nbtree/nbtutils.c.rej === using 'git apply' to apply patch ./0001-Add-separate-record-leaf-and-metadata-stats-for-inde.patch === Applied patch to 'contrib/amcheck/verify_gin.c' cleanly. Applied patch to 'contrib/amcheck/verify_nbtree.c' cleanly. Applied patch to 'contrib/bloom/blinsert.c' cleanly. Applied patch to 'contrib/bloom/blscan.c' cleanly. Applied patch to 'contrib/bloom/blutils.c' cleanly. Applied patch to 'contrib/bloom/blvacuum.c' cleanly. Applied patch to 'contrib/pageinspect/btreefuncs.c' cleanly. Applied patch to 'contrib/pageinspect/rawpage.c' cleanly. Applied patch to 'contrib/pg_surgery/heap_surgery.c' cleanly. Applied patch to 'contrib/pg_visibility/pg_visibility.c' cleanly. Applied patch to 'contrib/pgstattuple/pgstatapprox.c' cleanly. Applied patch to 'contrib/pgstattuple/pgstatindex.c' cleanly. Applied patch to 'contrib/pgstattuple/pgstattuple.c' cleanly. Applied patch to 'doc/src/sgml/monitoring.sgml' cleanly. Applied patch to 'src/backend/access/brin/brin.c' cleanly. Applied patch to 'src/backend/access/brin/brin_pageops.c' cleanly. Applied patch to 'src/backend/access/brin/brin_revmap.c' cleanly. Applied patch to 'src/backend/access/gin/ginbtree.c' cleanly. Applied patch to 'src/backend/access/gin/ginfast.c' cleanly. Applied patch to 'src/backend/access/gin/ginget.c' cleanly. Applied patch to 'src/backend/access/gin/ginutil.c' cleanly. Applied patch to 'src/backend/access/gin/ginvacuum.c' cleanly. Applied patch to 'src/backend/access/gist/gist.c' cleanly. Applied patch to 'src/backend/access/gist/gistbuild.c' cleanly. Applied patch to 'src/backend/access/gist/gistget.c' cleanly. Applied patch to 'src/backend/access/gist/gistutil.c' cleanly. Applied patch to 'src/backend/access/gist/gistvacuum.c' cleanly. Applied patch to 'src/backend/access/hash/hash.c' cleanly. Applied patch to 'src/backend/access/hash/hashpage.c' cleanly. Applied patch to 'src/backend/access/heap/heapam.c' with conflicts. Applied patch to 'src/backend/access/heap/heapam_handler.c' cleanly. Applied patch to 'src/backend/access/heap/hio.c' cleanly. Applied patch to 'src/backend/access/heap/vacuumlazy.c' cleanly. Applied patch to 'src/backend/access/heap/visibilitymap.c' cleanly. Applied patch to 'src/backend/access/nbtree/nbtinsert.c' cleanly. Applied patch to 'src/backend/access/nbtree/nbtpage.c' cleanly. Applied patch to 'src/backend/access/nbtree/nbtree.c' cleanly. Applied patch to 'src/backend/access/nbtree/nbtsearch.c' cleanly. Applied patch to 'src/backend/access/nbtree/nbtutils.c' with conflicts. Applied patch to 'src/backend/access/spgist/spgdoinsert.c' cleanly. Applied patch to 'src/backend/access/spgist/spgscan.c' cleanly. Applied patch to 'src/backend/access/spgist/spgutils.c' cleanly. Applied patch to 'src/backend/access/spgist/spgvacuum.c' cleanly. Applied patch to 'src/backend/access/transam/xloginsert.c' cleanly. Applied patch to 'src/backend/catalog/system_views.sql' cleanly. Applied patch to 'src/backend/commands/sequence.c' cleanly. Applied patch to 'src/backend/storage/aio/read_stream.c' cleanly. Applied patch to 'src/backend/storage/buffer/bufmgr.c' cleanly. Applied patch to 'src/backend/storage/freespace/freespace.c' cleanly. Applied patch to 'src/backend/utils/activity/pgstat_database.c' cleanly. Applied patch to 'src/backend/utils/activity/pgstat_relation.c' cleanly. Applied patch to 'src/backend/utils/adt/pgstatfuncs.c' cleanly. Applied patch to 'src/include/access/nbtree.h' cleanly. Applied patch to 'src/include/catalog/pg_proc.dat' cleanly. Applied patch to 'src/include/pgstat.h' cleanly. Applied patch to 'src/include/storage/bufmgr.h' cleanly. Applied patch to 'src/test/modules/test_aio/test_aio.c' cleanly. Applied patch to 'src/test/regress/expected/rules.out' cleanly. Applied patch to 'src/test/regress/expected/stats.out' cleanly. Applied patch to 'src/test/regress/sql/stats.sql' cleanly. U src/backend/access/heap/heapam.c U src/backend/access/nbtree/nbtutils.c diff --cc src/backend/access/heap/heapam.c index 0dcd6ee817e,162620c0295..00000000000 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@@ -3333,8 -3304,8 +3333,13 @@@ heap_update(Relation relation, ItemPoin interesting_attrs = bms_add_members(interesting_attrs, id_attrs); block = ItemPointerGetBlockNumber(otid); ++<<<<<<< ours + INJECTION_POINT("heap_update-before-pin", NULL); + buffer = ReadBuffer(relation, block); ++======= + INJECTION_POINT("heap_update-before-pin"); + buffer = ReadBuffer(relation, block, NULL); ++>>>>>>> theirs page = BufferGetPage(buffer); /* diff --cc src/backend/access/nbtree/nbtutils.c index c71d1b6f2e1,c705559362f..00000000000 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@@ -3360,18 -3315,21 +3361,23 @@@ _bt_killitems(IndexScanDesc scan BTPageOpaque opaque; OffsetNumber minoff; OffsetNumber maxoff; - int i; int numKilled = so->numKilled; bool killedsomething = false; ++<<<<<<< ours + Buffer buf; ++======= + bool droppedpin PG_USED_FOR_ASSERTS_ONLY; + bool hit = false; ++>>>>>>> theirs + Assert(numKilled > 0); Assert(BTScanPosIsValid(so->currPos)); + Assert(scan->heapRelation != NULL); /* can't be a bitmap index scan */ - /* - * Always reset the scan state, so we don't look for same items on other - * pages. - */ + /* Always invalidate so->killedItems[] before leaving so->currPos */ so->numKilled = 0; - if (BTScanPosIsPinned(so->currPos)) + if (!so->dropPin) { /* * We have held the pin on this page since we read the index tuples, @@@ -3384,26 -3344,24 +3390,38 @@@ } else { - Buffer buf; - + XLogRecPtr latestlsn; + ++<<<<<<< ours + Assert(!BTScanPosIsPinned(so->currPos)); + Assert(RelationNeedsWAL(rel)); + buf = _bt_getbuf(rel, so->currPos.currPage, BT_READ); + + latestlsn = BufferGetLSNAtomic(buf); + Assert(!XLogRecPtrIsInvalid(so->currPos.lsn)); + Assert(so->currPos.lsn <= latestlsn); + if (so->currPos.lsn != latestlsn) ++======= + droppedpin = true; + /* Attempt to re-read the buffer, getting pin and lock. */ + buf = _bt_getbuf(scan->indexRelation, so->currPos.currPage, BT_READ, &hit); + + page = BufferGetPage(buf); + pgstat_count_index_buffer(scan->indexRelation, !P_ISLEAF(BTPageGetOpaque(page)), hit); + if (BufferGetLSNAtomic(buf) == so->currPos.lsn) + so->currPos.buf = buf; + else ++>>>>>>> theirs { - /* Modified while not pinned means hinting is not safe. */ - _bt_relbuf(scan->indexRelation, buf); + /* Modified, give up on hinting */ + _bt_relbuf(rel, buf); return; } + + /* Unmodified, hinting is safe */ } + page = BufferGetPage(buf); opaque = BTPageGetOpaque(page); minoff = P_FIRSTDATAKEY(opaque); maxoff = PageGetMaxOffsetNumber(page);