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

From: Noah Misch <noah(at)leadboat(dot)com>
To: Alexander Korotkov <aekorotkov(at)gmail(dot)com>
Cc: Maxim Orlov <orlovmg(at)gmail(dot)com>, Aleksander Alekseev <aleksander(at)timescale(dot)com>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Japin Li <japinli(at)hotmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Michael Paquier <michael(at)paquier(dot)xyz>, Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
Subject: Re: XID formatting and SLRU refactorings (was: Add 64-bit XIDs into PostgreSQL 15)
Date: 2024-06-26 00:27:47
Message-ID: 20240626002747.dc.nmisch@google.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Nov 27, 2023 at 01:43:26AM +0200, Alexander Korotkov wrote:
> v61 looks good to me. I'm going to push it as long as there are no objections.

This yielded commit 4ed8f09 "Index SLRUs by 64-bit integers rather than by
32-bit integers" and left some expressions coercing SLRU page numbers to int.
Two sources:

grep -i 'int\b.*page' $(git grep -l SimpleLruInit)
make && touch $(git grep -l SimpleLruInit) && make PROFILE=-Wconversion 2>&1 | less -p '.int. from .int64. may alter its value'

(Not every match needs to change.)

> --- a/src/include/access/slru.h
> +++ b/src/include/access/slru.h

> @@ -127,7 +127,15 @@ typedef struct SlruCtlData
> * the behavior of this callback has no functional implications.) Use
> * SlruPagePrecedesUnitTests() in SLRUs meeting its criteria.
> */
> - bool (*PagePrecedes) (int, int);
> + bool (*PagePrecedes) (int64, int64);
> +
> + /*
> + * If true, use long segment filenames formed from lower 48 bits of the
> + * segment number, e.g. pg_xact/000000001234. Otherwise, use short
> + * filenames formed from lower 16 bits of the segment number e.g.
> + * pg_xact/1234.
> + */
> + bool long_segment_names;

SlruFileName() makes 15-character (60-bit) file names. Where does the 48-bit
limit arise? How does the SlruFileName() comment about a 24-bit limit for
short names relate this comment's 16-bit limit?

nm

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2024-06-26 00:30:27 Re: [PATCH] Add ACL (Access Control List) acronym
Previous Message Michael Paquier 2024-06-26 00:25:13 Re: Backporting BackgroundPsql