pg_basebackup fails on databases with high OIDs

Peter Eisentraut <peter.eisentraut@2ndquadrant.com>

From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: Magnus Hagander <magnus@hagander.net>
Date: 2020-01-06T08:07:26Z
Lists: pgsql-hackers

Attachments

This is a new bug in PG12.  When you have a database with an OID above 
INT32_MAX (signed), then pg_basebackup fails thus:

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().

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Commits

  1. Fix base backup with database OIDs larger than INT32_MAX

  2. Track block level checksum failures in pg_stat_database