diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c index 77b05cc0a7..248aa1a655 100644 --- a/src/backend/access/transam/slru.c +++ b/src/backend/access/transam/slru.c @@ -72,6 +72,21 @@ #include "storage/shmem.h" #include "utils/guc_hooks.h" +/* + * Converts segment number to the filename of the segment. + * + * "path" should point to a buffer at least MAXPGPATH characters long. + * + * If ctl->long_segment_names is true, segno can be in the range [0, 2^60-1]. + * The resulting file name is made of 15 characters, e.g. dir/123456789ABCDEF. + * + * If ctl->long_segment_names is false, segno can be in the range [0, 2^24-1]. + * The resulting file name is made of 4 to 6 characters, as of: + * + * dir/1234 for [0, 2^16-1] + * dir/12345 for [2^16, 2^20-1] + * dir/123456 for [2^20, 2^24-1] + */ static inline int SlruFileName(SlruCtl ctl, char *path, int64 segno) { diff --git a/src/include/access/slru.h b/src/include/access/slru.h index 8a8d191873..97e612cd10 100644 --- a/src/include/access/slru.h +++ b/src/include/access/slru.h @@ -134,10 +134,9 @@ typedef struct SlruCtlData bits16 bank_mask; /* - * 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. + * If true, use long segment file names. Otherwise, use short file names. + * + * For details about the file name format, see SlruFileName(). */ bool long_segment_names;