Re: XID formatting and SLRU refactorings (was: Add 64-bit XIDs into PostgreSQL 15)

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Aleksander Alekseev <aleksander@timescale.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>, Michael Paquier <michael@paquier.xyz>, Ian Lawrence Barwick <barwick@gmail.com>, Maxim Orlov <orlovmg@gmail.com>, Simon Riggs <simon.riggs@enterprisedb.com>, Hamid Akhtar <hamid.akhtar@percona.com>, Pavel Borisov <pashkin.elfe@gmail.com>, Justin Pryzby <pryzby@telsasoft.com>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Japin Li <japinli@hotmail.com>, Alexander Korotkov <aekorotkov@gmail.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, Ilya Anfimov <ilan@tzirechnoy.com>
Date: 2022-12-07T17:50:27Z
Lists: pgsql-hackers
Hi,

On 2022-12-07 11:40:08 +0300, Aleksander Alekseev wrote:
> Hi Michael,
>
> > The CF bot is showing some failures here.  You may want to
> > double-check.
>
> Thanks! PFA v48.

This causes a lot of failures with ubsan:

https://cirrus-ci.com/task/6035600772431872

performing post-bootstrap initialization ... ../src/backend/access/transam/slru.c:1520:9: runtime error: load of misaligned address 0x7fff6362db8c for type 'int64', which requires 8 byte alignment
0x7fff6362db8c: note: pointer points here
  01 00 00 00 00 00 00 00  d0 02 00 00 00 00 00 00  d0 02 00 00 00 00 00 00  01 00 00 00 00 00 00 00
              ^
==18947==Using libbacktrace symbolizer.
    #0 0x564d7c45cc6b in SlruScanDirCbReportPresence ../src/backend/access/transam/slru.c:1520
    #1 0x564d7c45cd88 in SlruScanDirectory ../src/backend/access/transam/slru.c:1595
    #2 0x564d7c44872c in TruncateCLOG ../src/backend/access/transam/clog.c:889
    #3 0x564d7c62ecd7 in vac_truncate_clog ../src/backend/commands/vacuum.c:1779
    #4 0x564d7c6320a8 in vac_update_datfrozenxid ../src/backend/commands/vacuum.c:1642
    #5 0x564d7c632a78 in vacuum ../src/backend/commands/vacuum.c:537
    #6 0x564d7c63347d in ExecVacuum ../src/backend/commands/vacuum.c:273
    #7 0x564d7ca4afea in standard_ProcessUtility ../src/backend/tcop/utility.c:866
    #8 0x564d7ca4b723 in ProcessUtility ../src/backend/tcop/utility.c:530
    #9 0x564d7ca46e81 in PortalRunUtility ../src/backend/tcop/pquery.c:1158
    #10 0x564d7ca4755d in PortalRunMulti ../src/backend/tcop/pquery.c:1315
    #11 0x564d7ca47c02 in PortalRun ../src/backend/tcop/pquery.c:791
    #12 0x564d7ca40ecb in exec_simple_query ../src/backend/tcop/postgres.c:1238
    #13 0x564d7ca43c01 in PostgresMain ../src/backend/tcop/postgres.c:4551
    #14 0x564d7ca441a4 in PostgresSingleUserMain ../src/backend/tcop/postgres.c:4028
    #15 0x564d7c74d883 in main ../src/backend/main/main.c:197
    #16 0x7fde7793dd09 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d09)
    #17 0x564d7c2d30c9 in _start (/tmp/cirrus-ci-build/build/tmp_install/usr/local/pgsql/bin/postgres+0x8530c9)

Greetings,

Andres Freund



Commits

  1. Fix more holes with SLRU code in need of int64 for segment numbers

  2. Use more consistently int64 for page numbers in SLRU-related code

  3. Improve comments in slru.{c,h} about segment name format

  4. Reorder actions in ProcArrayApplyRecoveryInfo()

  5. Fix typo in 5a1dfde8334b

  6. Fix warning due non-standard inline declaration in 4ed8f0913bfdb5f355

  7. Add SLRU tests for 64-bit page case

  8. Make use FullTransactionId in 2PC filenames

  9. Use larger segment file names for pg_notify

  10. Index SLRUs by 64-bit integers rather than by 32-bit integers

  11. Keep track of transaction commit timestamps

  12. Handle 5-char filenames in SlruScanDirectory