diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 1a34bd3715..bd08b64450 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -1064,8 +1064,9 @@ exec_simple_query(const char *query_string) */ parsetree_list = pg_parse_query(query_string); - /* Log immediately if dictated by log_statement */ - if (check_log_statement(parsetree_list)) + /* Log immediately if dictated by log_statement and XID assigned. */ + if (TransactionIdIsValid(GetTopTransactionIdIfAny()) && + check_log_statement(parsetree_list)) { ereport(LOG, (errmsg("statement: %s", query_string), @@ -1282,6 +1283,16 @@ exec_simple_query(const char *query_string) PortalDrop(portal, false); + /* Log if dictated by log_statement and has not been logged. */ + if (!was_logged && check_log_statement(parsetree_list)) + { + ereport(LOG, + (errmsg("statement: %s", query_string), + errhidestmt(true), + errdetail_execute(parsetree_list))); + was_logged = true; + } + if (lnext(parsetree_list, parsetree_item) == NULL) { /*