Re: pg_split_walfile_name - Mailing list pgsql-admin

From Fabrice Chapuis
Subject Re: pg_split_walfile_name
Date
Msg-id CAA5-nLAhDhC=HTrqckygMv0CagVs39j0jiGgrGRUPDd=PFB4OA@mail.gmail.com
Whole thread Raw
In response to Re: pg_split_walfile_name  (Bruce Momjian <bruce@momjian.us>)
List pgsql-admin
select * FROM pg_split_walfile_name(:'file_name') pd;
+-[ RECORD 1 ]---+----------+
| segment_number | 12583339 |
| timeline_id    | 1        |
+----------------+----------+

Yes, number of sgements 12583339 correspond to  C001AB in hexdecimal

thanks for answering

Fabrice

On Tue, Aug 12, 2025 at 7:34 PM Bruce Momjian <bruce@momjian.us> wrote:
On Thu, Jul 31, 2025 at 10:08:25AM +0200, Fabrice Chapuis wrote:
> Hi,
>
> In the documentation, PostgreSQL: Documentation: 17: 9.28. System
> Administration Functions, I do not understand the position 100C in the wal
> filename and how the result could be C001?
>
> Any idea?
>
> Regards,
>
> Fabrice
>
> pg_split_walfile_name is useful to compute a LSN from a file offset and WAL
> file name, for example:
>
> postgres=# \set file_name '000000010000000100C000AB'
> postgres=# \set offset 256
> postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset AS lsn
>   FROM pg_split_walfile_name(:'file_name') pd,
>        pg_show_all_settings() ps
>   WHERE ps.name = 'wal_segment_size';
>       lsn
> ---------------
>  C001/AB000100
> (1 row)

I think your problem is that you are converting the WAL segment/offset
to a number of bytes by multiplying by wal_segment_size, and then you
are casting it to an LSN, which assumes time line/segment number;  try
this:

        SELECT to_hex((pd.segment_number * ps.setting::int + :offset)::bigint) AS lsn
          FROM pg_split_walfile_name(:'file_name') pd,
               pg_show_all_settings() ps
          WHERE ps.name = 'wal_segment_size';
             lsn
        --------------
         c001ab000100


--
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Do not let urgent matters crowd out time for investment in the future.

pgsql-admin by date:

Previous
From: Laurenz Albe
Date:
Subject: Re: Re: DB size value different than "/data" dir size