Re: pg_basebackup fails on databases with high OIDs
Magnus Hagander <[email protected]> Sat, 11 Jan 2020 17:47:41 +0100
| Newsgroups | gmane.comp.db.postgresql.devel.general |
|---|---|
| Message-ID | <CABUevEyO2u3Mo_BH+SmMEAJbywWpb7=HLTB3d1iyCaXZ43mGsQ@mail.gmail.com> |
On Sat, Jan 11, 2020 at 5:44 PM Julien Rouhaud <[email protected]> wrote: > > On Sat, Jan 11, 2020 at 08:21:11AM +0100, Peter Eisentraut wrote: > > On 2020-01-06 21:00, Magnus Hagander wrote: > > > > +0.5 to avoid calling OidInputFunctionCall() > > > > > > Or just directly using atol() instead of atoi()? Well maybe not > > > directly but in a small wrapper that verifies it's not bigger than an > > > unsigned? > > > > > > Unlike in cases where we use oidin etc, we are dealing with data that > > > is "mostly trusted" here, aren't we? Meaning we could call atol() on > > > it, and throw an error if it overflows, and be done with it? > > > Subdirectories in the data directory aren't exactly "untrusted enduser > > > data"... > > > > Yeah, it looks like we are using strtoul() without additional error checking > > in similar situations, so here is a patch doing it like that. > > > - true, isDbDir ? pg_atoi(lastDir + 1, sizeof(Oid), 0) : InvalidOid); > > + true, isDbDir ? (Oid) strtoul(lastDir + 1, NULL, 10) : InvalidOid); > > Looking at some other code, I just discovered the atooid() macro that already > does the same, maybe it'd be better for consistency to use that instead? +1. Whie it does the same thing, consistency is good! :) -- Magnus Hagander Me: https://www.hagander.net/ Work: https://www.redpill-linpro.com/