aboutsummaryrefslogtreecommitdiff
path: root/src/include/backup/basebackup_incremental.h
blob: 1c3d0c925b15391a913230c0d5cfffe7c7a8d869 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*-------------------------------------------------------------------------
 *
 * basebackup_incremental.h
 *	  API for incremental backup support
 *
 * Portions Copyright (c) 2010-2025, PostgreSQL Global Development Group
 *
 * src/include/backup/basebackup_incremental.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef BASEBACKUP_INCREMENTAL_H
#define BASEBACKUP_INCREMENTAL_H

#include "access/xlogbackup.h"
#include "common/relpath.h"
#include "storage/block.h"
#include "utils/palloc.h"

#define INCREMENTAL_MAGIC			0xd3ae1f0d

typedef enum
{
	BACK_UP_FILE_FULLY,
	BACK_UP_FILE_INCREMENTALLY
} FileBackupMethod;

struct IncrementalBackupInfo;
typedef struct IncrementalBackupInfo IncrementalBackupInfo;

extern IncrementalBackupInfo *CreateIncrementalBackupInfo(MemoryContext);

extern void AppendIncrementalManifestData(IncrementalBackupInfo *ib,
										  const char *data,
										  int len);
extern void FinalizeIncrementalManifest(IncrementalBackupInfo *ib);

extern void PrepareForIncrementalBackup(IncrementalBackupInfo *ib,
										BackupState *backup_state);

extern char *GetIncrementalFilePath(Oid dboid, Oid spcoid,
									RelFileNumber relfilenumber,
									ForkNumber forknum, unsigned segno);
extern FileBackupMethod GetFileBackupMethod(IncrementalBackupInfo *ib,
											const char *path,
											Oid dboid, Oid spcoid,
											RelFileNumber relfilenumber,
											ForkNumber forknum,
											unsigned segno, size_t size,
											unsigned *num_blocks_required,
											BlockNumber *relative_block_numbers,
											unsigned *truncation_block_length);
extern size_t GetIncrementalFileSize(unsigned num_blocks_required);
extern size_t GetIncrementalHeaderSize(unsigned num_blocks_required);

#endif