From: Peter Eisentraut Date: Mon, 30 Apr 2018 17:49:20 +0000 (-0400) Subject: Don't do logical replication of TRUNCATE of zero tables X-Git-Tag: REL_11_BETA1~140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=92e1583b439ffab1d20419998895932e4fbe32fd;p=thirdparty%2Fpostgresql.git 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. --- 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);