Re: pg_basebackup fails on databases with high OIDs

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, Magnus Hagander <magnus@hagander.net>
Date: 2020-01-06T08:20:53Z
Lists: pgsql-hackers
On Mon, Jan 06, 2020 at 09:07:26AM +0100, Peter Eisentraut wrote:
> This is a new bug in PG12.  When you have a database with an OID above
> INT32_MAX (signed), then pg_basebackup fails thus:

Yep.  Introduced by 6b9e875.

> pg_basebackup: error: could not get write-ahead log end position from
> server: ERROR:  value "3000000000" is out of range for type integer
> 
> The cause appears to be commit 6b9e875f7286d8535bff7955e5aa3602e188e436.
> 
> A possible fix is attached.  An alternative to using OidInputFunctionCall()
> would be exporting something like oidin_subr().

I think that you would save yourself from a lot of trouble if you do
the latter with a subroutine.  Not quite like that based on the
process context where the call is done, but remember 21f428eb..
--
Michael

Commits

  1. Fix base backup with database OIDs larger than INT32_MAX

  2. Track block level checksum failures in pg_stat_database