diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2018-04-30 13:49:20 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2018-04-30 13:49:20 -0400 |
commit | 92e1583b439ffab1d20419998895932e4fbe32fd (patch) | |
tree | 0694cf062f71d19ba00fb3b7f516e0272a488c08 | |
parent | e348e7ae5727a6da8678036d748e5c5af7deb6c9 (diff) | |
download | postgresql-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.c | 17 |
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); |