On Tue, Jun 07, 2022 at 04:05:20PM +0900, Kyotaro Horiguchi wrote: > If I want to read a file that I'm not sure of the existence but I want > to read the whole file if exists, I would call > pg_read_binary_file('path', 0, -1, true) but unfortunately this > doesn't work.
Yeah, the "normal" cases that I have seen in the past just used an extra call to pg_stat_file() to retrieve the size of the file before reading it, but arguably it does not help if the file gets extended between the stat() call and the read() call (we don't need to care about this case with pg_rewind that has been the reason why the missing_ok argument was introduced first, for one, as file extensions don't matter as we'd replay from the LSN point where the rewind began, adding the new blocks at replay). There is also an argument for supporting negative values rather than just -1. For example -2 could mean to read all the file except the last byte. Or you could have an extra flavor, as of pg_read_file(text, bool) to read the whole by default. Supporting just -1 as special value for the amount of data to read would be confusing IMO. So I would tend to choose for a set of arguments based on (text, bool). -- Michael
signature.asc
Description: PGP signature