]> granicus.if.org Git - postgresql/blobdiff - src/include/access/xlog_internal.h
Run pgindent on 9.2 source tree in preparation for first 9.3
[postgresql] / src / include / access / xlog_internal.h
index cfb7f0a4de668cfee137ff543b26a4b09988857f..3328a50faba0064a58a58ad8ff9dfd445f13e5fb 100644 (file)
@@ -8,10 +8,10 @@
  * needed by rmgr routines (redo support for individual record types).
  * So the XLogRecord typedef and associated stuff appear in xlog.h.
  *
- * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/access/xlog_internal.h,v 1.28 2010/01/15 09:19:06 heikki Exp $
+ * src/include/access/xlog_internal.h
  */
 #ifndef XLOG_INTERNAL_H
 #define XLOG_INTERNAL_H
@@ -71,7 +71,7 @@ typedef struct XLogContRecord
 /*
  * Each page of XLOG file has a header like this:
  */
-#define XLOG_PAGE_MAGIC 0xD166 /* can be used as WAL version indicator */
+#define XLOG_PAGE_MAGIC 0xD071 /* can be used as WAL version indicator */
 
 typedef struct XLogPageHeaderData
 {
@@ -106,8 +106,10 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
 #define XLP_FIRST_IS_CONTRECORD                0x0001
 /* This flag indicates a "long" page header */
 #define XLP_LONG_HEADER                                0x0002
+/* This flag indicates backup blocks starting in this page are optional */
+#define XLP_BKP_REMOVABLE                      0x0004
 /* All defined flag bits in xlp_info (used for validity checking of header) */
-#define XLP_ALL_FLAGS                          0x0003
+#define XLP_ALL_FLAGS                          0x0007
 
 #define XLogPageHeaderSize(hdr)                \
        (((hdr)->xlp_info & XLP_LONG_HEADER) ? SizeOfXLogLongPHD : SizeOfXLogShortPHD)
@@ -152,15 +154,15 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
        } while (0)
 
 /* Align a record pointer to next page */
-#define NextLogPage(recptr)    \
+#define NextLogPage(recptr) \
        do {    \
-               if (recptr.xrecoff % XLOG_BLCKSZ != 0)  \
-                       recptr.xrecoff +=       \
-                               (XLOG_BLCKSZ - recptr.xrecoff % XLOG_BLCKSZ);   \
-               if (recptr.xrecoff >= XLogFileSize)     \
+               if ((recptr).xrecoff % XLOG_BLCKSZ != 0)        \
+                       (recptr).xrecoff += \
+                               (XLOG_BLCKSZ - (recptr).xrecoff % XLOG_BLCKSZ); \
+               if ((recptr).xrecoff >= XLogFileSize) \
                {       \
-                       (recptr.xlogid)++;      \
-                       recptr.xrecoff = 0;     \
+                       ((recptr).xlogid)++;    \
+                       (recptr).xrecoff = 0; \
                }       \
        } while (0)
 
@@ -216,6 +218,9 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
 #define XLogFileName(fname, tli, log, seg)     \
        snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg)
 
+#define XLogFromFileName(fname, tli, log, seg) \
+       sscanf(fname, "%08X%08X%08X", tli, log, seg)
+
 #define XLogFilePath(path, tli, log, seg)      \
        snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, log, seg)
 
@@ -253,7 +258,7 @@ typedef struct RmgrData
 extern const RmgrData RmgrTable[];
 
 /*
- * Exported to support xlog switching from bgwriter
+ * Exported to support xlog switching from checkpointer
  */
 extern pg_time_t GetLastSegSwitchTime(void);
 extern XLogRecPtr RequestXLogSwitch(void);
@@ -264,12 +269,18 @@ extern XLogRecPtr RequestXLogSwitch(void);
 extern Datum pg_start_backup(PG_FUNCTION_ARGS);
 extern Datum pg_stop_backup(PG_FUNCTION_ARGS);
 extern Datum pg_switch_xlog(PG_FUNCTION_ARGS);
+extern Datum pg_create_restore_point(PG_FUNCTION_ARGS);
 extern Datum pg_current_xlog_location(PG_FUNCTION_ARGS);
 extern Datum pg_current_xlog_insert_location(PG_FUNCTION_ARGS);
 extern Datum pg_last_xlog_receive_location(PG_FUNCTION_ARGS);
 extern Datum pg_last_xlog_replay_location(PG_FUNCTION_ARGS);
+extern Datum pg_last_xact_replay_timestamp(PG_FUNCTION_ARGS);
 extern Datum pg_xlogfile_name_offset(PG_FUNCTION_ARGS);
 extern Datum pg_xlogfile_name(PG_FUNCTION_ARGS);
 extern Datum pg_is_in_recovery(PG_FUNCTION_ARGS);
+extern Datum pg_xlog_replay_pause(PG_FUNCTION_ARGS);
+extern Datum pg_xlog_replay_resume(PG_FUNCTION_ARGS);
+extern Datum pg_is_xlog_replay_paused(PG_FUNCTION_ARGS);
+extern Datum pg_xlog_location_diff(PG_FUNCTION_ARGS);
 
 #endif   /* XLOG_INTERNAL_H */