mirror of https://github.com/postgres/postgres
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
|
9 years ago
|
/*-------------------------------------------------------------------------
|
||
|
|
*
|
||
|
|
* walmethods.h
|
||
|
|
*
|
||
|
|
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
|
||
|
|
*
|
||
|
|
* IDENTIFICATION
|
||
|
|
* src/bin/pg_basebackup/walmethods.h
|
||
|
|
*-------------------------------------------------------------------------
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
typedef void *Walfile;
|
||
|
|
|
||
|
|
typedef enum
|
||
|
|
{
|
||
|
|
CLOSE_NORMAL,
|
||
|
|
CLOSE_UNLINK,
|
||
|
|
CLOSE_NO_RENAME,
|
||
|
|
} WalCloseMethod;
|
||
|
|
|
||
|
|
typedef struct WalWriteMethod WalWriteMethod;
|
||
|
|
struct WalWriteMethod
|
||
|
|
{
|
||
|
|
Walfile(*open_for_write) (const char *pathname, const char *temp_suffix, size_t pad_to_size);
|
||
|
|
int (*close) (Walfile f, WalCloseMethod method);
|
||
|
|
bool (*existsfile) (const char *pathname);
|
||
|
|
ssize_t (*get_file_size) (const char *pathname);
|
||
|
|
|
||
|
|
ssize_t (*write) (Walfile f, const void *buf, size_t count);
|
||
|
|
off_t (*get_current_pos) (Walfile f);
|
||
|
|
int (*fsync) (Walfile f);
|
||
|
|
bool (*finish) (void);
|
||
|
|
char *(*getlasterror) (void);
|
||
|
|
};
|
||
|
|
|
||
|
|
/*
|
||
|
|
* Available WAL methods:
|
||
|
|
* - WalDirectoryMethod - write WAL to regular files in a standard pg_xlog
|
||
|
|
* - TarDirectoryMethod - write WAL to a tarfile corresponding to pg_xlog
|
||
|
|
* (only implements the methods required for pg_basebackup,
|
||
|
|
* not all those required for pg_receivexlog)
|
||
|
|
*/
|
||
|
|
WalWriteMethod *CreateWalDirectoryMethod(const char *basedir, bool sync);
|
||
|
|
WalWriteMethod *CreateWalTarMethod(const char *tarbase, int compression, bool sync);
|