postgres-v2.patch

text/plain

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
Series: patch v2
File+
src/backend/tcop/postgres.c 13 2
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)
 		{
 			/*