mirror of
https://github.com/postgres/postgres.git
synced 2025-05-12 16:21:30 +03:00
Don't build full initial logical decoding snapshot if NOEXPORT_SNAPSHOT.
Earlier commits (56e19d938dd14 and 2bef06d5164) make it cheaper to create a logical slot if not exporting the initial snapshot. If NOEXPORT_SNAPSHOT is specified, we can skip the overhead, not just when creating a slot via sql (which can't export snapshots). As NOEXPORT_SNAPSHOT has only recently been introduced, this shouldn't be backpatched.
This commit is contained in:
parent
56e19d938d
commit
ab9c43381e
@ -873,6 +873,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
|
|||||||
if (cmd->kind == REPLICATION_KIND_LOGICAL)
|
if (cmd->kind == REPLICATION_KIND_LOGICAL)
|
||||||
{
|
{
|
||||||
LogicalDecodingContext *ctx;
|
LogicalDecodingContext *ctx;
|
||||||
|
bool need_full_snapshot = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do options check early so that we can bail before calling the
|
* Do options check early so that we can bail before calling the
|
||||||
@ -884,6 +885,8 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
|
|||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("CREATE_REPLICATION_SLOT ... EXPORT_SNAPSHOT "
|
(errmsg("CREATE_REPLICATION_SLOT ... EXPORT_SNAPSHOT "
|
||||||
"must not be called inside a transaction")));
|
"must not be called inside a transaction")));
|
||||||
|
|
||||||
|
need_full_snapshot = true;
|
||||||
}
|
}
|
||||||
else if (snapshot_action == CRS_USE_SNAPSHOT)
|
else if (snapshot_action == CRS_USE_SNAPSHOT)
|
||||||
{
|
{
|
||||||
@ -906,10 +909,11 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
|
|||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("CREATE_REPLICATION_SLOT ... USE_SNAPSHOT "
|
(errmsg("CREATE_REPLICATION_SLOT ... USE_SNAPSHOT "
|
||||||
"must not be called in a subtransaction")));
|
"must not be called in a subtransaction")));
|
||||||
|
|
||||||
|
need_full_snapshot = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx = CreateInitDecodingContext(cmd->plugin, NIL,
|
ctx = CreateInitDecodingContext(cmd->plugin, NIL, need_full_snapshot,
|
||||||
true, /* build snapshot */
|
|
||||||
logical_read_xlog_page,
|
logical_read_xlog_page,
|
||||||
WalSndPrepareWrite, WalSndWriteData);
|
WalSndPrepareWrite, WalSndWriteData);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user