postgres.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
File+
src/backend/tcop/postgres.c 13 2
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 21b9763183..b73676ab9d 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -1063,8 +1063,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 (GetTopTransactionIdIfAny() != InvalidTransactionId &&
+			check_log_statement(parsetree_list))
 	{
 		ereport(LOG,
 				(errmsg("statement: %s", query_string),
@@ -1281,6 +1282,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)
 		{
 			/*