aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2017-04-21 00:56:27 +0900
committerFujii Masao <fujii@postgresql.org>2017-04-21 00:56:27 +0900
commit3a66581dd12b4108ce22fb4dad38258df39cb685 (patch)
tree48f179e5c261a00327e1d3e99b8429c8005f36e5 /src
parent88b0a31926331eb5336ec92010b3b4f7e6efb53c (diff)
downloadpostgresql-3a66581dd12b4108ce22fb4dad38258df39cb685.tar.gz
postgresql-3a66581dd12b4108ce22fb4dad38258df39cb685.zip
Prevent log_replication_commands from causing SQL commands to be logged.
Commit 7c4f524 allowed walsender to execute normal SQL commands to support table sync feature in logical replication. Previously while log_statement caused such SQL commands to be logged, log_replication_commands caused them to be logged, too. That is, such SQL commands were logged twice unexpectedly when those settings were both enabled. This commit forces log_replication_commands to log only replication commands, to prevent normal SQL commands from being logged twice. Author: Masahiko Sawada Reviewed-by: Kyotaro Horiguchi Reported-by: Fujii Masao Discussion: http://postgr.es/m/CAHGQGwFDWh_Qr-q_GEMpD+qH=vYPMdVqw=ZOSY3kX_Pna9R9SA@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/replication/walsender.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index dbb10c7b006..26090738fc3 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -1369,14 +1369,6 @@ exec_replication_command(const char *cmd_string)
MemoryContext old_context;
/*
- * Log replication command if log_replication_commands is enabled. Even
- * when it's disabled, log the command with DEBUG1 level for backward
- * compatibility.
- */
- ereport(log_replication_commands ? LOG : DEBUG1,
- (errmsg("received replication command: %s", cmd_string)));
-
- /*
* CREATE_REPLICATION_SLOT ... LOGICAL exports a snapshot until the next
* command arrives. Clean up the old stuff if there's anything.
*/
@@ -1400,6 +1392,16 @@ exec_replication_command(const char *cmd_string)
cmd_node = replication_parse_result;
/*
+ * Log replication command if log_replication_commands is enabled. Even
+ * when it's disabled, log the command with DEBUG1 level for backward
+ * compatibility. Note that SQL commands are not logged here, and will be
+ * logged later if log_statement is enabled.
+ */
+ if (cmd_node->type != T_SQLCmd)
+ ereport(log_replication_commands ? LOG : DEBUG1,
+ (errmsg("received replication command: %s", cmd_string)));
+
+ /*
* CREATE_REPLICATION_SLOT ... LOGICAL exports a snapshot. If it was
* called outside of transaction the snapshot should be cleared here.
*/