You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-07-05 00:28:52 +02:00
Split VR_EXTERN/FN_EXTERN macros from FV_EXTERN.
This should make it a little clearer what the variable (VR) macros are doing since the declaration/definition cannot both be set to extern (but functions can). Splitting the variable macros out also allows them to be changed in the future with little churn, while changing the function macro creates a large amount of churn.
This commit is contained in:
@ -39,7 +39,7 @@ pgClientFreeResource(THIS_VOID)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN PgClient *
|
||||
FN_EXTERN PgClient *
|
||||
pgClientNew(const String *host, const unsigned int port, const String *database, const String *user, const TimeMSec timeout)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
@ -118,7 +118,7 @@ pgClientEscape(const String *string)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN PgClient *
|
||||
FN_EXTERN PgClient *
|
||||
pgClientOpen(PgClient *this)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
@ -165,7 +165,7 @@ pgClientOpen(PgClient *this)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN Pack *
|
||||
FN_EXTERN Pack *
|
||||
pgClientQuery(PgClient *const this, const String *const query, const PgClientQueryResult resultType)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
@ -357,7 +357,7 @@ pgClientQuery(PgClient *const this, const String *const query, const PgClientQue
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN void
|
||||
FN_EXTERN void
|
||||
pgClientClose(PgClient *this)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
@ -377,7 +377,7 @@ pgClientClose(PgClient *this)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgClientToLog(const PgClient *this)
|
||||
{
|
||||
return strNewFmt(
|
||||
|
@ -32,7 +32,7 @@ typedef struct PgClient PgClient;
|
||||
/***********************************************************************************************************************************
|
||||
Constructors
|
||||
***********************************************************************************************************************************/
|
||||
FV_EXTERN PgClient *pgClientNew(
|
||||
FN_EXTERN PgClient *pgClientNew(
|
||||
const String *host, const unsigned int port, const String *database, const String *user, const TimeMSec timeout);
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
@ -86,7 +86,7 @@ pgClientTimeout(const PgClient *const this)
|
||||
Functions
|
||||
***********************************************************************************************************************************/
|
||||
// Open connection to PostgreSQL
|
||||
FV_EXTERN PgClient *pgClientOpen(PgClient *this);
|
||||
FN_EXTERN PgClient *pgClientOpen(PgClient *this);
|
||||
|
||||
// Move to a new parent mem context
|
||||
FN_INLINE_ALWAYS PgClient *
|
||||
@ -96,10 +96,10 @@ pgClientMove(PgClient *const this, MemContext *const parentNew)
|
||||
}
|
||||
|
||||
// Execute a query and return results
|
||||
FV_EXTERN Pack *pgClientQuery(PgClient *this, const String *query, PgClientQueryResult resultType);
|
||||
FN_EXTERN Pack *pgClientQuery(PgClient *this, const String *query, PgClientQueryResult resultType);
|
||||
|
||||
// Close connection to PostgreSQL
|
||||
FV_EXTERN void pgClientClose(PgClient *this);
|
||||
FN_EXTERN void pgClientClose(PgClient *this);
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Destructor
|
||||
@ -113,7 +113,7 @@ pgClientFree(PgClient *const this)
|
||||
/***********************************************************************************************************************************
|
||||
Macros for function logging
|
||||
***********************************************************************************************************************************/
|
||||
FV_EXTERN String *pgClientToLog(const PgClient *this);
|
||||
FN_EXTERN String *pgClientToLog(const PgClient *this);
|
||||
|
||||
#define FUNCTION_LOG_PG_CLIENT_TYPE \
|
||||
PgClient *
|
||||
|
@ -117,7 +117,7 @@ pgInterfaceVersion(unsigned int pgVersion)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN bool
|
||||
FN_EXTERN bool
|
||||
pgDbIsTemplate(const String *const name)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -128,7 +128,7 @@ pgDbIsTemplate(const String *const name)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN bool
|
||||
FN_EXTERN bool
|
||||
pgDbIsSystem(const String *const name)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -139,7 +139,7 @@ pgDbIsSystem(const String *const name)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN bool
|
||||
FN_EXTERN bool
|
||||
pgDbIsSystemId(const unsigned int id)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -218,7 +218,7 @@ pgControlFromBuffer(const Buffer *controlFile)
|
||||
FUNCTION_LOG_RETURN(PG_CONTROL, result);
|
||||
}
|
||||
|
||||
FV_EXTERN PgControl
|
||||
FN_EXTERN PgControl
|
||||
pgControlFromFile(const Storage *storage)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
@ -243,7 +243,7 @@ pgControlFromFile(const Storage *storage)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN uint32_t
|
||||
FN_EXTERN uint32_t
|
||||
pgControlVersion(unsigned int pgVersion)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -266,7 +266,7 @@ typedef struct PgWalCommon
|
||||
#define PG_WAL_LONG_HEADER 0x0002
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN PgWal
|
||||
FN_EXTERN PgWal
|
||||
pgWalFromBuffer(const Buffer *walBuffer)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelTrace);
|
||||
@ -311,7 +311,7 @@ pgWalFromBuffer(const Buffer *walBuffer)
|
||||
FUNCTION_LOG_RETURN(PG_WAL, result);
|
||||
}
|
||||
|
||||
FV_EXTERN PgWal
|
||||
FN_EXTERN PgWal
|
||||
pgWalFromFile(const String *walFile, const Storage *storage)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
@ -335,7 +335,7 @@ pgWalFromFile(const String *walFile, const Storage *storage)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -361,7 +361,7 @@ pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN uint64_t
|
||||
FN_EXTERN uint64_t
|
||||
pgLsnFromStr(const String *lsn)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -383,7 +383,7 @@ pgLsnFromStr(const String *lsn)
|
||||
FUNCTION_TEST_RETURN(UINT64, result);
|
||||
}
|
||||
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgLsnToStr(uint64_t lsn)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -394,7 +394,7 @@ pgLsnToStr(uint64_t lsn)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -408,7 +408,7 @@ pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN uint32_t
|
||||
FN_EXTERN uint32_t
|
||||
pgTimelineFromWalSegment(const String *const walSegment)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -422,7 +422,7 @@ pgTimelineFromWalSegment(const String *const walSegment)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN StringList *
|
||||
FN_EXTERN StringList *
|
||||
pgLsnRangeToWalSegmentList(
|
||||
const uint32_t timeline, const uint64_t lsnStart, const uint64_t lsnStop, const unsigned int walSegmentSize)
|
||||
{
|
||||
@ -472,7 +472,7 @@ pgLsnRangeToWalSegmentList(
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN const String *
|
||||
FN_EXTERN const String *
|
||||
pgLsnName(unsigned int pgVersion)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -485,7 +485,7 @@ pgLsnName(unsigned int pgVersion)
|
||||
/***********************************************************************************************************************************
|
||||
Get WAL name (wal/xlog) for a PostgreSQL version
|
||||
***********************************************************************************************************************************/
|
||||
FV_EXTERN const String *
|
||||
FN_EXTERN const String *
|
||||
pgWalName(unsigned int pgVersion)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -496,7 +496,7 @@ pgWalName(unsigned int pgVersion)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN const String *
|
||||
FN_EXTERN const String *
|
||||
pgWalPath(unsigned int pgVersion)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -507,7 +507,7 @@ pgWalPath(unsigned int pgVersion)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN const String *
|
||||
FN_EXTERN const String *
|
||||
pgXactPath(unsigned int pgVersion)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
@ -518,7 +518,7 @@ pgXactPath(unsigned int pgVersion)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN unsigned int
|
||||
FN_EXTERN unsigned int
|
||||
pgVersionFromStr(const String *const version)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelTrace);
|
||||
@ -542,7 +542,7 @@ pgVersionFromStr(const String *const version)
|
||||
UINT, cvtZSubNToUInt(strZ(version), 0, (size_t)idxStart) * 10000 + cvtZToUInt(strZ(version) + (size_t)idxStart + 1) * 100);
|
||||
}
|
||||
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgVersionToStr(unsigned int version)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelTrace);
|
||||
@ -556,7 +556,7 @@ pgVersionToStr(unsigned int version)
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgControlToLog(const PgControl *pgControl)
|
||||
{
|
||||
return strNewFmt(
|
||||
@ -564,7 +564,7 @@ pgControlToLog(const PgControl *pgControl)
|
||||
pgControl->walSegmentSize, cvtBoolToConstZ(pgControl->pageChecksum));
|
||||
}
|
||||
|
||||
FV_EXTERN String *
|
||||
FN_EXTERN String *
|
||||
pgWalToLog(const PgWal *pgWal)
|
||||
{
|
||||
return strNewFmt("{version: %u, systemId: %" PRIu64 "}", pgWal->version, pgWal->systemId);
|
||||
|
@ -121,64 +121,64 @@ typedef struct PgWal
|
||||
Functions
|
||||
***********************************************************************************************************************************/
|
||||
// Is this a template database?
|
||||
FV_EXTERN bool pgDbIsTemplate(const String *name);
|
||||
FN_EXTERN bool pgDbIsTemplate(const String *name);
|
||||
|
||||
// Is this a system database, i.e. template or postgres?
|
||||
FV_EXTERN bool pgDbIsSystem(const String *name);
|
||||
FN_EXTERN bool pgDbIsSystem(const String *name);
|
||||
|
||||
// Does this database have a system id, i.e. less than the minimum assignable user id?
|
||||
FV_EXTERN bool pgDbIsSystemId(unsigned int id);
|
||||
FN_EXTERN bool pgDbIsSystemId(unsigned int id);
|
||||
|
||||
// Get info from pg_control
|
||||
FV_EXTERN PgControl pgControlFromFile(const Storage *storage);
|
||||
FN_EXTERN PgControl pgControlFromFile(const Storage *storage);
|
||||
|
||||
// Get the control version for a PostgreSQL version
|
||||
FV_EXTERN uint32_t pgControlVersion(unsigned int pgVersion);
|
||||
FN_EXTERN uint32_t pgControlVersion(unsigned int pgVersion);
|
||||
|
||||
// Convert version string to version number and vice versa
|
||||
FV_EXTERN unsigned int pgVersionFromStr(const String *version);
|
||||
FV_EXTERN String *pgVersionToStr(unsigned int version);
|
||||
FN_EXTERN unsigned int pgVersionFromStr(const String *version);
|
||||
FN_EXTERN String *pgVersionToStr(unsigned int version);
|
||||
|
||||
// Get info from WAL header
|
||||
FV_EXTERN PgWal pgWalFromFile(const String *walFile, const Storage *storage);
|
||||
FV_EXTERN PgWal pgWalFromBuffer(const Buffer *walBuffer);
|
||||
FN_EXTERN PgWal pgWalFromFile(const String *walFile, const Storage *storage);
|
||||
FN_EXTERN PgWal pgWalFromBuffer(const Buffer *walBuffer);
|
||||
|
||||
// Get the tablespace identifier used to distinguish versions in a tablespace directory, e.g. PG_15_202209061
|
||||
FV_EXTERN String *pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion);
|
||||
FN_EXTERN String *pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion);
|
||||
|
||||
// Convert a string to an lsn and vice versa
|
||||
FV_EXTERN uint64_t pgLsnFromStr(const String *lsn);
|
||||
FV_EXTERN String *pgLsnToStr(uint64_t lsn);
|
||||
FN_EXTERN uint64_t pgLsnFromStr(const String *lsn);
|
||||
FN_EXTERN String *pgLsnToStr(uint64_t lsn);
|
||||
|
||||
// Convert a timeline and lsn to a wal segment and vice versa
|
||||
FV_EXTERN String *pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize);
|
||||
FN_EXTERN String *pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize);
|
||||
|
||||
// Get timeline from WAL segment name
|
||||
FV_EXTERN uint32_t pgTimelineFromWalSegment(const String *walSegment);
|
||||
FN_EXTERN uint32_t pgTimelineFromWalSegment(const String *walSegment);
|
||||
|
||||
// Convert a timeline and lsn range to a list of wal segments
|
||||
FV_EXTERN StringList *pgLsnRangeToWalSegmentList(
|
||||
FN_EXTERN StringList *pgLsnRangeToWalSegmentList(
|
||||
uint32_t timeline, uint64_t lsnStart, uint64_t lsnStop, unsigned int walSegmentSize);
|
||||
|
||||
// Get name used for lsn in functions (this was changed in PostgreSQL 10 for consistency since lots of names were changing)
|
||||
FV_EXTERN const String *pgLsnName(unsigned int pgVersion);
|
||||
FN_EXTERN const String *pgLsnName(unsigned int pgVersion);
|
||||
|
||||
// Calculate the checksum for a page. Page cannot be const because the page header is temporarily modified during processing.
|
||||
FV_EXTERN uint16_t pgPageChecksum(unsigned char *page, uint32_t blockNo);
|
||||
FN_EXTERN uint16_t pgPageChecksum(unsigned char *page, uint32_t blockNo);
|
||||
|
||||
FV_EXTERN const String *pgWalName(unsigned int pgVersion);
|
||||
FN_EXTERN const String *pgWalName(unsigned int pgVersion);
|
||||
|
||||
// Get wal path (this was changed in PostgreSQL 10 to avoid including "log" in the name)
|
||||
FV_EXTERN const String *pgWalPath(unsigned int pgVersion);
|
||||
FN_EXTERN const String *pgWalPath(unsigned int pgVersion);
|
||||
|
||||
// Get transaction commit log path (this was changed in PostgreSQL 10 to avoid including "log" in the name)
|
||||
FV_EXTERN const String *pgXactPath(unsigned int pgVersion);
|
||||
FN_EXTERN const String *pgXactPath(unsigned int pgVersion);
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Macros for function logging
|
||||
***********************************************************************************************************************************/
|
||||
FV_EXTERN String *pgControlToLog(const PgControl *pgControl);
|
||||
FV_EXTERN String *pgWalToLog(const PgWal *pgWal);
|
||||
FN_EXTERN String *pgControlToLog(const PgControl *pgControl);
|
||||
FN_EXTERN String *pgWalToLog(const PgWal *pgWal);
|
||||
|
||||
#define FUNCTION_LOG_PG_CONTROL_TYPE \
|
||||
PgControl
|
||||
|
@ -13,7 +13,7 @@ Include the page checksum code
|
||||
#include "postgres/interface/pageChecksum.vendor.c.inc"
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
FV_EXTERN uint16_t
|
||||
FN_EXTERN uint16_t
|
||||
pgPageChecksum(unsigned char *page, uint32_t blockNo)
|
||||
{
|
||||
return pg_checksum_page((char *)page, blockNo);
|
||||
|
Reference in New Issue
Block a user