aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2018-04-30 13:49:20 -0400
committerPeter Eisentraut <peter_e@gmx.net>2018-04-30 13:49:20 -0400
commit92e1583b439ffab1d20419998895932e4fbe32fd (patch)
tree0694cf062f71d19ba00fb3b7f516e0272a488c08
parente348e7ae5727a6da8678036d748e5c5af7deb6c9 (diff)
downloadpostgresql-92e1583b439ffab1d20419998895932e4fbe32fd.tar.gz
postgresql-92e1583b439ffab1d20419998895932e4fbe32fd.zip
Don't do logical replication of TRUNCATE of zero tables
When due to publication configuration, a TRUNCATE change ends up with zero tables to be published, don't send the message out, just skip it. It's not wrong, but obviously useless overhead.
-rw-r--r--src/backend/replication/pgoutput/pgoutput.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index a3e5300679f..86e0951a700 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -407,13 +407,16 @@ pgoutput_truncate(LogicalDecodingContext *ctx, ReorderBufferTXN *txn,
maybe_send_schema(ctx, relation, relentry);
}
- OutputPluginPrepareWrite(ctx, true);
- logicalrep_write_truncate(ctx->out,
- nrelids,
- relids,
- change->data.truncate.cascade,
- change->data.truncate.restart_seqs);
- OutputPluginWrite(ctx, true);
+ if (nrelids > 0)
+ {
+ OutputPluginPrepareWrite(ctx, true);
+ logicalrep_write_truncate(ctx->out,
+ nrelids,
+ relids,
+ change->data.truncate.cascade,
+ change->data.truncate.restart_seqs);
+ OutputPluginWrite(ctx, true);
+ }
MemoryContextSwitchTo(old);
MemoryContextReset(data->context);