Re: Is it correct to say, "invalid data in file \"%s\"", BACKUP_LABEL_FILE in do_pg_backup_stop?

From: David Steele <david(at)pgmasters(dot)net>
To: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, bharath(dot)rupireddyforpostgres(at)gmail(dot)com
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is it correct to say, "invalid data in file \"%s\"", BACKUP_LABEL_FILE in do_pg_backup_stop?
Date: 2022-07-26 11:52:31
Message-ID: 0953af02-782f-e9cc-27b3-9d1890105a3b@pgmasters.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 7/25/22 22:49, Kyotaro Horiguchi wrote:
> At Mon, 25 Jul 2022 14:21:38 +0530, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> wrote in
>> Hm. I think we must take this opportunity to clean it up. You are
>> right, we don't need to parse the label file contents (just like we
>> used to do previously after reading it from the file) in
>> do_pg_backup_stop(), instead we can just pass a structure. Also,
>> do_pg_backup_stop() isn't modifying any labelfile contents, but using
>> startxlogfilename, startpoint and backupfrom from the labelfile
>> contents. I think this information can easily be passed as a single
>> structure. In fact, I might think a bit more here and wrap label_file,
>> tblspc_map_file to a single structure something like below and pass it
>> across the functions.
>>
>> typedef struct BackupState
>> {
>> StringInfo label_file;
>> StringInfo tblspc_map_file;
>> char startxlogfilename[MAXFNAMELEN];
>> XLogRecPtr startpoint;
>> char backupfrom[20];
>> } BackupState;
>>
>> This way, the code is more readable, structured and we can remove 2
>> sscanf() calls, 2 "invalid data in file" errors, 1 strchr() call, 1
>> strstr() call. Only thing is that it creates code diff from the
>> previous PG versions which is fine IMO. If okay, I'm happy to prepare
>> a patch.
>>
>> Thoughts?
>
> It is more or less what was in my mind, but it seems that we don't
> need StringInfo there, or should avoid it to signal the strings are
> not editable.

I would prefer to have all the components of backup_label stored
separately and then generate backup_label from them in pg_backup_stop().

For PG16 I am planning to add some fields to backup_label that are not
known when pg_backup_start() is called, e.g. min recovery time.

Regards,
-David

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Frédéric Yhuel 2022-07-26 11:58:17 Re: Allow parallel plan for referential integrity checks?
Previous Message Tom Lane 2022-07-26 11:40:47 Re: Cygwin cleanup