Re: invalid data in file backup_label problem on windows - Mailing list pgsql-hackers

From David Steele
Subject Re: invalid data in file backup_label problem on windows
Date
Msg-id ab224724-f1c1-03a8-38d3-3f29f1a5d8ad@pgmasters.net
Whole thread Raw
In response to RE: invalid data in file backup_label problem on windows  ("wangsh.fnst@fujitsu.com" <wangsh.fnst@fujitsu.com>)
Responses RE: invalid data in file backup_label problem on windows
List pgsql-hackers
On 3/19/21 6:11 AM, wangsh.fnst@fujitsu.com wrote:
> David Steele <david@pgmasters.net> wrote:
> 
>> I'm not sure how I feel about this patch (not really a Windows person)
>> but I do think that you shouldn't modify the backup_label when writing
>> it, i.e. you should be writing backup_label in binary mode to avoid this
>> issue.
> 
> IMO, I don't modify backup_lable, I just execute select * FROM pg_stop_backup(),
> copy the result from terminal to a file and save the file, but most of editor on
> Windows will using CRLF as default to edit file, such as notepad, notepad++.

It's not clear to me what text editors have to do with this? Are you  
editing the file manually?

> BTW, in [1]
>> The pg_stop_backup will return one row with three values. The second
>> of these fields should be written to a file named backup_label in the root
>> directory of the backup. The third field should be written to a file named
>> tablespace_map unless the field is empty. These files are vital to the backup
>> working, and must be written without modification.
> 
> Do not use CRLF to edit a backup_label on windows is not mentioned.

"These files are vital to the backup working, and must be written  
without modification" seems pretty clear to me.

>> No objections from me if it gets committed but I'm not sure it should be
>> classified as a "bug fix" since the backup_label was modified from what
>> postgres provided, unless I am misunderstanding.
> 
> I think the backup_label is not a postgres provided file(using Non-Exclusive Low Level API),
> this file must be created by user.

It is provided by postgres via pg_stop_backup(). It should be simply  
saved as-is to a file.

> If users use Exclusive Low Level API or pg_basebakup, this file will be auto created, and
> users will not edit this file.

You keep saying "edit the file" but perhaps you mean "save the file"?

Regards,
-- 
-David
david@pgmasters.net



pgsql-hackers by date:

Previous
From: Amit Khandekar
Date:
Subject: Re: Speeding up GIST index creation for tsvectors
Next
From: Hannu Krosing
Date:
Subject: Re: pl/pgsql feature request: shorthand for argument and local variable references