PostgreSQL Source Code  git master
logical.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  * logical.h
3  * PostgreSQL logical decoding coordination
4  *
5  * Copyright (c) 2012-2020, PostgreSQL Global Development Group
6  *
7  *-------------------------------------------------------------------------
8  */
9 #ifndef LOGICAL_H
10 #define LOGICAL_H
11 
12 #include "access/xlog.h"
13 #include "access/xlogreader.h"
15 #include "replication/slot.h"
16 
18 
20  XLogRecPtr Ptr,
21  TransactionId xid,
22  bool last_write
23 );
24 
26 
28  XLogRecPtr Ptr,
29  TransactionId xid
30 );
31 
32 typedef struct LogicalDecodingContext
33 {
34  /* memory context this is all allocated in */
36 
37  /* The associated replication slot */
39 
40  /* infrastructure pieces for decoding */
44 
45  /*
46  * Marks the logical decoding context as fast forward decoding one. Such a
47  * context does not have plugin loaded so most of the following properties
48  * are unused.
49  */
51 
54 
55  /*
56  * User specified options
57  */
59 
60  /*
61  * User-Provided callback for writing/streaming out data.
62  */
66 
67  /*
68  * Output buffer.
69  */
71 
72  /*
73  * Private data pointer of the output plugin.
74  */
76 
77  /*
78  * Private data pointer for the data writer.
79  */
81 
82  /*
83  * State for writing output.
84  */
90 
91 
92 extern void CheckLogicalDecodingRequirements(void);
93 
96  bool need_full_snapshot,
97  XLogRecPtr restart_lsn,
98  XLogPageReadCB read_page,
104  bool fast_forward,
105  XLogPageReadCB read_page,
112 
114 extern void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn,
115  XLogRecPtr restart_lsn);
117 
119 
120 #endif
TransactionId write_xid
Definition: logical.h:88
static const char * plugin
struct ReorderBuffer * reorder
Definition: logical.h:42
uint32 TransactionId
Definition: c.h:513
OutputPluginOptions options
Definition: logical.h:53
bool DecodingContextReady(LogicalDecodingContext *ctx)
Definition: logical.c:453
OutputPluginCallbacks callbacks
Definition: logical.h:52
uint16 RepOriginId
Definition: xlogdefs.h:58
void * output_plugin_private
Definition: logical.h:75
void LogicalIncreaseXminForSlot(XLogRecPtr lsn, TransactionId xmin)
Definition: logical.c:872
MemoryContext context
Definition: logical.h:35
List * output_plugin_options
Definition: logical.h:58
LogicalOutputPluginWriterWrite LogicalOutputPluginWriterPrepareWrite
Definition: logical.h:25
void(* LogicalOutputPluginWriterUpdateProgress)(struct LogicalDecodingContext *lr, XLogRecPtr Ptr, TransactionId xid)
Definition: logical.h:27
LogicalDecodingContext * CreateInitDecodingContext(char *plugin, List *output_plugin_options, bool need_full_snapshot, XLogRecPtr restart_lsn, XLogPageReadCB read_page, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write, LogicalOutputPluginWriterUpdateProgress update_progress)
Definition: logical.c:227
XLogRecPtr write_location
Definition: logical.h:87
void DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
Definition: logical.c:462
LogicalOutputPluginWriterPrepareWrite prepare_write
Definition: logical.h:63
bool filter_by_origin_cb_wrapper(LogicalDecodingContext *ctx, RepOriginId origin_id)
Definition: logical.c:798
LogicalDecodingContext * CreateDecodingContext(XLogRecPtr start_lsn, List *output_plugin_options, bool fast_forward, XLogPageReadCB read_page, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write, LogicalOutputPluginWriterUpdateProgress update_progress)
Definition: logical.c:370
LogicalOutputPluginWriterUpdateProgress update_progress
Definition: logical.h:65
struct LogicalDecodingContext LogicalDecodingContext
void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn, XLogRecPtr restart_lsn)
Definition: logical.c:929
struct SnapBuild * snapshot_builder
Definition: logical.h:43
uint64 XLogRecPtr
Definition: xlogdefs.h:21
void(* LogicalOutputPluginWriterWrite)(struct LogicalDecodingContext *lr, XLogRecPtr Ptr, TransactionId xid, bool last_write)
Definition: logical.h:19
void LogicalConfirmReceivedLocation(XLogRecPtr lsn)
Definition: logical.c:998
XLogReaderState * reader
Definition: logical.h:41
TransactionId xmin
Definition: snapbuild.c:156
ReplicationSlot * slot
Definition: logical.h:38
LogicalOutputPluginWriterWrite write
Definition: logical.h:64
StringInfo out
Definition: logical.h:70
void FreeDecodingContext(LogicalDecodingContext *ctx)
Definition: logical.c:505
int(* XLogPageReadCB)(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *readBuf)
Definition: xlogreader.h:54
Definition: pg_list.h:50
void * output_writer_private
Definition: logical.h:80
void CheckLogicalDecodingRequirements(void)
Definition: logical.c:75