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-2025, 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 bool skipped_xact
31);
32
34{
35 /* memory context this is all allocated in */
37
38 /* The associated replication slot */
40
41 /* infrastructure pieces for decoding */
45
46 /*
47 * Marks the logical decoding context as fast forward decoding one. Such a
48 * context does not have plugin loaded so most of the following properties
49 * are unused.
50 */
52
55
56 /*
57 * User specified options
58 */
60
61 /*
62 * User-Provided callback for writing/streaming out data.
63 */
67
68 /*
69 * Output buffer.
70 */
72
73 /*
74 * Private data pointer of the output plugin.
75 */
77
78 /*
79 * Private data pointer for the data writer.
80 */
82
83 /*
84 * Does the output plugin support streaming, and is it enabled?
85 */
87
88 /*
89 * Does the output plugin support two-phase decoding, and is it enabled?
90 */
92
93 /*
94 * Is two-phase option given by output plugin?
95 *
96 * This flag indicates that the plugin passed in the two-phase option as
97 * part of the START_STREAMING command. We can't rely solely on the
98 * twophase flag which only tells whether the plugin provided all the
99 * necessary two-phase callbacks.
100 */
102
103 /*
104 * State for writing output.
105 */
110 /* Are we processing the end LSN of a transaction? */
112
113 /* Do we need to process any change in fast_forward mode? */
116
117
118extern void CheckLogicalDecodingRequirements(void);
119
121 List *output_plugin_options,
122 bool need_full_snapshot,
123 XLogRecPtr restart_lsn,
124 XLogReaderRoutine *xl_routine,
129 List *output_plugin_options,
130 bool fast_forward,
131 XLogReaderRoutine *xl_routine,
138
139extern void LogicalIncreaseXminForSlot(XLogRecPtr current_lsn,
142 XLogRecPtr restart_lsn);
144
146 TransactionId xid, const char *gid);
148extern void ResetLogicalStreamingState(void);
150
151extern bool LogicalReplicationSlotHasPendingWal(XLogRecPtr end_of_wal);
153 bool *found_consistent_snapshot);
154
155#endif
uint32 TransactionId
Definition: c.h:623
void(* LogicalOutputPluginWriterUpdateProgress)(struct LogicalDecodingContext *lr, XLogRecPtr Ptr, TransactionId xid, bool skipped_xact)
Definition: logical.h:27
XLogRecPtr LogicalSlotAdvanceAndCheckSnapState(XLogRecPtr moveto, bool *found_consistent_snapshot)
Definition: logical.c:2044
void LogicalConfirmReceivedLocation(XLogRecPtr lsn)
Definition: logical.c:1818
void FreeDecodingContext(LogicalDecodingContext *ctx)
Definition: logical.c:675
bool LogicalReplicationSlotHasPendingWal(XLogRecPtr end_of_wal)
Definition: logical.c:1962
struct LogicalDecodingContext LogicalDecodingContext
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:496
void(* LogicalOutputPluginWriterWrite)(struct LogicalDecodingContext *lr, XLogRecPtr Ptr, TransactionId xid, bool last_write)
Definition: logical.h:19
void DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
Definition: logical.c:631
bool DecodingContextReady(LogicalDecodingContext *ctx)
Definition: logical.c:622
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:330
void UpdateDecodingStats(LogicalDecodingContext *ctx)
Definition: logical.c:1915
void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn, XLogRecPtr restart_lsn)
Definition: logical.c:1742
LogicalOutputPluginWriterWrite LogicalOutputPluginWriterPrepareWrite
Definition: logical.h:25
void ResetLogicalStreamingState(void)
Definition: logical.c:1905
void LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId xmin)
Definition: logical.c:1674
bool filter_prepare_cb_wrapper(LogicalDecodingContext *ctx, TransactionId xid, const char *gid)
Definition: logical.c:1165
void CheckLogicalDecodingRequirements(void)
Definition: logical.c:109
bool filter_by_origin_cb_wrapper(LogicalDecodingContext *ctx, RepOriginId origin_id)
Definition: logical.c:1197
static const char * plugin
Definition: pg_list.h:54
OutputPluginOptions options
Definition: logical.h:54
XLogReaderState * reader
Definition: logical.h:42
MemoryContext context
Definition: logical.h:36
struct SnapBuild * snapshot_builder
Definition: logical.h:44
void * output_writer_private
Definition: logical.h:81
StringInfo out
Definition: logical.h:71
XLogRecPtr write_location
Definition: logical.h:108
LogicalOutputPluginWriterPrepareWrite prepare_write
Definition: logical.h:64
OutputPluginCallbacks callbacks
Definition: logical.h:53
void * output_plugin_private
Definition: logical.h:76
TransactionId write_xid
Definition: logical.h:109
List * output_plugin_options
Definition: logical.h:59
ReplicationSlot * slot
Definition: logical.h:39
LogicalOutputPluginWriterWrite write
Definition: logical.h:65
struct ReorderBuffer * reorder
Definition: logical.h:43
LogicalOutputPluginWriterUpdateProgress update_progress
Definition: logical.h:66
TransactionId xmin
uint16 RepOriginId
Definition: xlogdefs.h:65
uint64 XLogRecPtr
Definition: xlogdefs.h:21