diff options
author | Fujii Masao <fujii@postgresql.org> | 2017-04-21 00:56:27 +0900 |
---|---|---|
committer | Fujii Masao <fujii@postgresql.org> | 2017-04-21 00:56:27 +0900 |
commit | 3a66581dd12b4108ce22fb4dad38258df39cb685 (patch) | |
tree | 48f179e5c261a00327e1d3e99b8429c8005f36e5 /src | |
parent | 88b0a31926331eb5336ec92010b3b4f7e6efb53c (diff) | |
download | postgresql-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.c | 18 |
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. */ |