On Mon, Nov 6, 2023 at 4:38 PM Aleksander Alekseev <aleksan...@timescale.com> wrote: > > > PFE the corrected patchset v58. > > > > I'd like to revive this thread. > > Many thanks for your comments and suggestions. > > > I think it worth adding asserts here to verify there is no overflow making us mapping different segments into the same files. > > Sorry, I didn't understand this one. Maybe you could provide the exact code?
I actually meant this. static int inline SlruFileName(SlruCtl ctl, char *path, int64 segno) { if (ctl->long_segment_names) { /* * We could use 16 characters here but the disadvantage would be that * the SLRU segments will be hard to distinguish from WAL segments. * * For this reason we use 15 characters. It is enough but also means * that in the future we can't decrease SLRU_PAGES_PER_SEGMENT easily. */ Assert(segno >= 0 && segno <= 0x1000000000000000); return snprintf(path, MAXPGPATH, "%s/%015llX", ctl->Dir, (long long) segno); } else { Assert(segno >= 0 && segno <= 0x10000); return snprintf(path, MAXPGPATH, "%s/%04X", (ctl)->Dir, (unsigned int) segno); } } As I now get, snprintf() wouldn't just truncate the high signs, instead it will use more characters. But I think assertions are useful anyway. ------ Regards, Alexander Korotkov