Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  xlogrecovery.h  Sprache: unbekannt

 
/*
 * xlogrecovery.h
 *
 * Functions for WAL recovery and standby mode
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/access/xlogrecovery.h
 */

#ifndef XLOGRECOVERY_H
#define XLOGRECOVERY_H

#include "access/xlogreader.h"
#include "catalog/pg_control.h"
#include "lib/stringinfo.h"
#include "utils/timestamp.h"

/*
 * Recovery target type.
 * Only set during a Point in Time recovery, not when in standby mode.
 */

typedef enum
{
 RECOVERY_TARGET_UNSET,
 RECOVERY_TARGET_XID,
 RECOVERY_TARGET_TIME,
 RECOVERY_TARGET_NAME,
 RECOVERY_TARGET_LSN,
 RECOVERY_TARGET_IMMEDIATE,
} RecoveryTargetType;

/*
 * Recovery target TimeLine goal
 */

typedef enum
{
 RECOVERY_TARGET_TIMELINE_CONTROLFILE,
 RECOVERY_TARGET_TIMELINE_LATEST,
 RECOVERY_TARGET_TIMELINE_NUMERIC,
} RecoveryTargetTimeLineGoal;

/* Recovery pause states */
typedef enum RecoveryPauseState
{
 RECOVERY_NOT_PAUSED,  /* pause not requested */
 RECOVERY_PAUSE_REQUESTED, /* pause requested, but not yet paused */
 RECOVERY_PAUSED,   /* recovery is paused */
} RecoveryPauseState;

/* User-settable GUC parameters */
extern PGDLLIMPORT bool recoveryTargetInclusive;
extern PGDLLIMPORT int recoveryTargetAction;
extern PGDLLIMPORT int recovery_min_apply_delay;
extern PGDLLIMPORT char *PrimaryConnInfo;
extern PGDLLIMPORT char *PrimarySlotName;
extern PGDLLIMPORT char *recoveryRestoreCommand;
extern PGDLLIMPORT char *recoveryEndCommand;
extern PGDLLIMPORT char *archiveCleanupCommand;

/* indirectly set via GUC system */
extern PGDLLIMPORT TransactionId recoveryTargetXid;
extern PGDLLIMPORT char *recovery_target_time_string;
extern PGDLLIMPORT TimestampTz recoveryTargetTime;
extern PGDLLIMPORT const char *recoveryTargetName;
extern PGDLLIMPORT XLogRecPtr recoveryTargetLSN;
extern PGDLLIMPORT RecoveryTargetType recoveryTarget;
extern PGDLLIMPORT bool wal_receiver_create_temp_slot;
extern PGDLLIMPORT RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
extern PGDLLIMPORT TimeLineID recoveryTargetTLIRequested;
extern PGDLLIMPORT TimeLineID recoveryTargetTLI;

/* Have we already reached a consistent database state? */
extern PGDLLIMPORT bool reachedConsistency;

/* Are we currently in standby mode? */
extern PGDLLIMPORT bool StandbyMode;

extern Size XLogRecoveryShmemSize(void);
extern void XLogRecoveryShmemInit(void);

extern void InitWalRecovery(ControlFileData *ControlFile,
       bool *wasShutdown_ptr, bool *haveBackupLabel_ptr,
       bool *haveTblspcMap_ptr);
extern void PerformWalRecovery(void);

/*
 * FinishWalRecovery() returns this.  It contains information about the point
 * where recovery ended, and why it ended.
 */

typedef struct
{
 /*
  * Information about the last valid or applied record, after which new WAL
  * can be appended.  'lastRec' is the position where the last record
  * starts, and 'endOfLog' is its end.  'lastPage' is a copy of the last
  * partial page that contains endOfLog (or NULL if endOfLog is exactly at
  * page boundary).  'lastPageBeginPtr' is the position where the last page
  * begins.
  *
  * endOfLogTLI is the TLI in the filename of the XLOG segment containing
  * the last applied record.  It could be different from lastRecTLI, if
  * there was a timeline switch in that segment, and we were reading the
  * old WAL from a segment belonging to a higher timeline.
 */

 XLogRecPtr lastRec;  /* start of last valid or applied record */
 TimeLineID lastRecTLI;
 XLogRecPtr endOfLog;  /* end of last valid or applied record */
 TimeLineID endOfLogTLI;

 XLogRecPtr lastPageBeginPtr; /* LSN of page that contains endOfLog */
 char    *lastPage;  /* copy of the last page, up to endOfLog */

 /*
  * abortedRecPtr is the start pointer of a broken record at end of WAL
  * when recovery completes; missingContrecPtr is the location of the first
  * contrecord that went missing.  See CreateOverwriteContrecordRecord for
  * details.
 */

 XLogRecPtr abortedRecPtr;
 XLogRecPtr missingContrecPtr;

 /* short human-readable string describing why recovery ended */
 char    *recoveryStopReason;

 /*
  * If standby or recovery signal file was found, these flags are set
  * accordingly.
 */

 bool  standby_signal_file_found;
 bool  recovery_signal_file_found;
} EndOfWalRecoveryInfo;

extern EndOfWalRecoveryInfo *FinishWalRecovery(void);
extern void ShutdownWalRecovery(void);
extern void RemovePromoteSignalFiles(void);

extern bool HotStandbyActive(void);
extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI);
extern RecoveryPauseState GetRecoveryPauseState(void);
extern void SetRecoveryPause(bool recoveryPause);
extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream);
extern TimestampTz GetLatestXTime(void);
extern TimestampTz GetCurrentChunkReplayStartTime(void);
extern XLogRecPtr GetCurrentReplayRecPtr(TimeLineID *replayEndTLI);

extern bool PromoteIsTriggered(void);
extern bool CheckPromoteSignal(void);
extern void WakeupRecovery(void);

extern void StartupRequestWalReceiverRestart(void);
extern void XLogRequestWalReceiverReply(void);

extern void RecoveryRequiresIntParameter(const char *param_name, int currValue, int minValue);

extern void xlog_outdesc(StringInfo buf, XLogReaderState *record);

#endif       /* XLOGRECOVERY_H */

Messung V0.5 in Prozent
C=93 H=95 G=93

[Seitenstruktur0.8Druckenetwas mehr zur Ethik2026-09-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126864
#Domains=2039723