mirror of
https://github.com/postgres/postgres.git
synced 2025-08-21 10:42:50 +03:00
Add Generic WAL interface
This interface is designed to give an access to WAL for extensions which could implement new access method, for example. Previously it was impossible because restoring from custom WAL would need to access system catalog to find a redo custom function. This patch suggests generic way to describe changes on page with standart layout. Bump XLOG_PAGE_MAGIC because of new record type. Author: Alexander Korotkov with a help of Petr Jelinek, Markus Nullmeier and minor editorization by my Reviewers: Petr Jelinek, Alvaro Herrera, Teodor Sigaev, Jim Nasby, Michael Paquier
This commit is contained in:
42
src/include/access/generic_xlog.h
Normal file
42
src/include/access/generic_xlog.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* generic_xlog.h
|
||||
* Generic xlog API definition.
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/access/generic_xlog.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef GENERIC_XLOG_H
|
||||
#define GENERIC_XLOG_H
|
||||
|
||||
#include "access/xlog.h"
|
||||
#include "access/xlog_internal.h"
|
||||
#include "access/xloginsert.h"
|
||||
#include "storage/bufpage.h"
|
||||
#include "utils/rel.h"
|
||||
|
||||
#define MAX_GENERIC_XLOG_PAGES XLR_NORMAL_MAX_BLOCK_ID
|
||||
|
||||
/* state of generic xlog record construction */
|
||||
struct GenericXLogState;
|
||||
typedef struct GenericXLogState GenericXLogState;
|
||||
|
||||
/* API for construction of generic xlog records */
|
||||
extern GenericXLogState *GenericXLogStart(Relation relation);
|
||||
extern Page GenericXLogRegister(GenericXLogState *state, Buffer buffer,
|
||||
bool isNew);
|
||||
extern void GenericXLogUnregister(GenericXLogState *state, Buffer buffer);
|
||||
extern XLogRecPtr GenericXLogFinish(GenericXLogState *state);
|
||||
extern void GenericXLogAbort(GenericXLogState *state);
|
||||
|
||||
/* functions defined for rmgr */
|
||||
extern void generic_redo(XLogReaderState *record);
|
||||
extern const char *generic_identify(uint8 info);
|
||||
extern void generic_desc(StringInfo buf, XLogReaderState *record);
|
||||
|
||||
#endif /* GENERIC_XLOG_H */
|
Reference in New Issue
Block a user