1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-07-05 00:28:52 +02:00

Add WAL info to PostgreSQL interface.

This allows the WAL header to be read for any supported version on PostgreSQL.
This commit is contained in:
David Steele
2019-03-19 19:44:06 +04:00
parent 1c9645d416
commit e938a89250
38 changed files with 1243 additions and 1 deletions

View File

@ -33,6 +33,15 @@ typedef struct PgControl
bool pageChecksum;
} PgControl;
/***********************************************************************************************************************************
PostgreSQL WAL Info
***********************************************************************************************************************************/
typedef struct PgWal
{
unsigned int version;
uint64_t systemId;
} PgWal;
/***********************************************************************************************************************************
Functions
***********************************************************************************************************************************/
@ -41,21 +50,31 @@ PgControl pgControlFromBuffer(const Buffer *controlFile);
unsigned int pgVersionFromStr(const String *version);
String *pgVersionToStr(unsigned int version);
PgWal pgWalFromFile(const String *walFile);
PgWal pgWalFromBuffer(const Buffer *walBuffer);
/***********************************************************************************************************************************
Test Functions
***********************************************************************************************************************************/
#ifdef DEBUG
Buffer *pgControlTestToBuffer(PgControl pgControl);
void pgWalTestToBuffer(PgWal pgWal, Buffer *walBuffer);
#endif
/***********************************************************************************************************************************
Macros for function logging
***********************************************************************************************************************************/
String *pgControlToLog(const PgControl *pgControl);
String *pgWalToLog(const PgWal *pgWal);
#define FUNCTION_LOG_PG_CONTROL_TYPE \
PgControl
#define FUNCTION_LOG_PG_CONTROL_FORMAT(value, buffer, bufferSize) \
FUNCTION_LOG_STRING_OBJECT_FORMAT(&value, pgControlToLog, buffer, bufferSize)
#define FUNCTION_LOG_PG_WAL_TYPE \
PgWal
#define FUNCTION_LOG_PG_WAL_FORMAT(value, buffer, bufferSize) \
FUNCTION_LOG_STRING_OBJECT_FORMAT(&value, pgWalToLog, buffer, bufferSize)
#endif