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  * Does the output plugin support streaming, and is it enabled?
84  */
85  bool streaming;
86 
87  /*
88  * State for writing output.
89  */
95 
96 
97 extern void CheckLogicalDecodingRequirements(void);
98 
101  bool need_full_snapshot,
102  XLogRecPtr restart_lsn,
103  XLogReaderRoutine *xl_routine,
109  bool fast_forward,
110  XLogReaderRoutine *xl_routine,
117 
119 extern void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn,
120  XLogRecPtr restart_lsn);
122 
124 extern void ResetLogicalStreamingState(void);
126 
127 #endif
TransactionId write_xid
Definition: logical.h:93
static const char * plugin
struct ReorderBuffer * reorder
Definition: logical.h:42
uint32 TransactionId
Definition: c.h:575
OutputPluginOptions options
Definition: logical.h:53
bool DecodingContextReady(LogicalDecodingContext *ctx)
Definition: logical.c:518
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:1238
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
XLogRecPtr write_location
Definition: logical.h:92
void DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
Definition: logical.c:527
LogicalOutputPluginWriterPrepareWrite prepare_write
Definition: logical.h:63
LogicalDecodingContext * CreateInitDecodingContext(const char *plugin, List *output_plugin_options, bool need_full_snapshot, XLogRecPtr restart_lsn, XLogReaderRoutine *xl_routine, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write, LogicalOutputPluginWriterUpdateProgress update_progress)
Definition: logical.c:283
void ResetLogicalStreamingState(void)
Definition: logical.c:1459
bool filter_by_origin_cb_wrapper(LogicalDecodingContext *ctx, RepOriginId origin_id)
Definition: logical.c:863
LogicalDecodingContext * CreateDecodingContext(XLogRecPtr start_lsn, List *output_plugin_options, bool fast_forward, XLogReaderRoutine *xl_routine, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write, LogicalOutputPluginWriterUpdateProgress update_progress)
Definition: logical.c:435
LogicalOutputPluginWriterUpdateProgress update_progress
Definition: logical.h:65
struct LogicalDecodingContext LogicalDecodingContext
void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn, XLogRecPtr restart_lsn)
Definition: logical.c:1295
void UpdateDecodingStats(LogicalDecodingContext *ctx)
Definition: logical.c:1469
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:1372
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:570
Definition: pg_list.h:50
void * output_writer_private
Definition: logical.h:80
void CheckLogicalDecodingRequirements(void)
Definition: logical.c:94