Re: XID formatting and SLRU refactorings
Heikki Linnakangas <hlinnaka@iki.fi>
On 27/11/2023 01:43, Alexander Korotkov wrote:
> v61 looks good to me. I'm going to push it as long as there are no objections.
This was discussed earlier, but is still present in v61:
> +/*
> + * An internal function used by SlruScanDirectory().
> + *
> + * Returns true if a file with a name of a given length may be a correct
> + * SLRU segment.
> + */
> +static inline bool
> +SlruCorrectSegmentFilenameLength(SlruCtl ctl, size_t len)
> +{
> + if (ctl->long_segment_names)
> + return (len == 15); /* see SlruFileName() */
> + else
> + /*
> + * Commit 638cf09e76d allowed 5-character lengths. Later commit
> + * 73c986adde5 allowed 6-character length.
> + *
> + * XXX should we still consider such names to be valid?
> + */
> + return (len == 4 || len == 5 || len == 6);
> +}
> +
I think it's pretty sloppy that the "short" filenames can be 4, 5 or 6
chars long. For pg_multixact/members, which introduced the 5-char case,
I think we should always pad the filenames 5 characters, and for
commit_ts which introduced the 6 char case, always pad to 6 characters.
Instead of a "long_segment_names" boolean, how about an integer field,
to specify the length.
That means that we'll need pg_upgrade to copy pg_multixact/members files
under the new names. That should be pretty straightforward.
--
Heikki Linnakangas
Neon (https://neon.tech)
Commits
-
Fix more holes with SLRU code in need of int64 for segment numbers
- b7935bc10b78 17.0 landed
- bd06cc338d82 18.0 landed
- e367a413b09f 17.0 landed
- c9e24573905b 18.0 landed
-
Use more consistently int64 for page numbers in SLRU-related code
- 165ea79a6077 17.0 landed
- 3937cadfd438 18.0 landed
-
Improve comments in slru.{c,h} about segment name format
- 3b279d89cb5c 17.0 landed
- ffb060392961 18.0 landed
-
Reorder actions in ProcArrayApplyRecoveryInfo()
- c64086b79dba 17.0 landed
-
Fix typo in 5a1dfde8334b
- ae2ccf66a261 17.0 landed
-
Fix warning due non-standard inline declaration in 4ed8f0913bfdb5f355
- b589f211e025 17.0 landed
-
Add SLRU tests for 64-bit page case
- a60b8a58f435 17.0 landed
-
Make use FullTransactionId in 2PC filenames
- 5a1dfde8334b 17.0 landed
-
Use larger segment file names for pg_notify
- 2cdf131c46e6 17.0 landed
-
Index SLRUs by 64-bit integers rather than by 32-bit integers
- 4ed8f0913bfd 17.0 landed
-
Keep track of transaction commit timestamps
- 73c986adde5d 9.5.0 cited
-
Handle 5-char filenames in SlruScanDirectory
- 638cf09e76d7 9.4.0 cited