Re: Timeline ID hexadecimal format

From: Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
To: Sébastien Lardière <sebastien(at)lardiere(dot)net>, Greg Stark <stark(at)mit(dot)edu>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Timeline ID hexadecimal format
Date: 2023-03-06 17:04:08
Message-ID: 0ac63394-1acc-5ec3-76b0-e99f481358f6@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 03.03.23 16:52, Sébastien Lardière wrote:
> On 02/03/2023 09:12, Peter Eisentraut wrote:
>> On 24.02.23 17:27, Sébastien Lardière wrote:
>>> diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml
>>> index be05a33205..7e26b51031 100644
>>> --- a/doc/src/sgml/backup.sgml
>>> +++ b/doc/src/sgml/backup.sgml
>>> @@ -1332,7 +1332,8 @@ restore_command = 'cp/mnt/server/archivedir/%f %p'
>>>       you like, add comments to a history file to record your own
>>> notes about
>>>       how and why this particular timeline was created.  Such
>>> comments will be
>>>       especially valuable when you have a thicket of different
>>> timelines as
>>> -    a result of experimentation.
>>> +    a result of experimentation. In both WAL segment file names and
>>> history files,
>>> +    the timeline ID number is expressed in hexadecimal.
>>>      </para>
>>>        <para>
>>
>> I think here it would be more helpful to show actual examples. Like,
>> here is a possible file name, this is what the different parts mean.
>
> So you mean explain the WAL filename and the history filename ? Is it
> the good place for it ?

Well, your patch says, by the way, the timeline ID in the file is
hexadecimal. Then one might ask, what file, what is a timeline, what
are the other numbers in the file, etc. It seems very specific in this
context. I don't know if the format of these file names is actually
documented somewhere.

>>> diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
>>> index e5c41cc6c6..3b5d041d92 100644
>>> --- a/doc/src/sgml/config.sgml
>>> +++ b/doc/src/sgml/config.sgml
>>> @@ -4110,7 +4110,9 @@ restore_command = 'copy
>>> "C:\\server\\archivedir\\%f" "%p"'  # Windows
>>>           current when the base backup was taken.  The
>>>           value <literal>latest</literal> recovers
>>>           to the latest timeline found in the archive, which is
>>> useful in
>>> -        a standby server. <literal>latest</literal> is the default.
>>> +        a standby server. A numerical value expressed in hexadecimal
>>> must be
>>> +        prefixed with <literal>0x</literal>, for example
>>> <literal>0x11</literal>.
>>> +        <literal>latest</literal> is the default.
>>>          </para>
>>>            <para>
>>
>> This applies to all configuration parameters, so it doesn't need to be
>> mentioned explicitly for individual ones.
>
> Probably, but is there another parameter with the same consequence ?
>
> worth it to document this point globally ?

It's ok to mention it again. We do something similar for example at
unix_socket_permissions. But maybe with more context, like "If you want
to specify a timeline ID hexadecimal (for example, if extracted from a
WAL file name), then prefix it with a 0x".

>>> diff --git a/doc/src/sgml/ref/pg_waldump.sgml
>>> b/doc/src/sgml/ref/pg_waldump.sgml
>>> index 343f0482a9..4ae8f2ebdd 100644
>>> --- a/doc/src/sgml/ref/pg_waldump.sgml
>>> +++ b/doc/src/sgml/ref/pg_waldump.sgml
>>> @@ -215,7 +215,8 @@ PostgreSQL documentation
>>>          <para>
>>>           Timeline from which to read WAL records. The default is to
>>> use the
>>>           value in <replaceable>startseg</replaceable>, if that is
>>> specified; otherwise, the
>>> -        default is 1.
>>> +        default is 1. The value must be expressed in decimal,
>>> contrary to the hexadecimal
>>> +        value given in WAL segment file names and history files.
>>>          </para>
>>>         </listitem>
>>>        </varlistentry>
>>
>> Maybe this could be fixed instead?
>
> Indeed, and strtoul is probably a better option than sscanf, don't you
> think ?

Yeah, the use of sscanf() is kind of weird here. We have been moving
the option parsing to use option_parse_int(). Maybe hex support could
be added there. Or just use strtoul().

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2023-03-06 17:10:23 Re: running logical replication as the subscription owner
Previous Message Melanie Plageman 2023-03-06 16:30:13 Re: Track IO times in pg_stat_io