diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 776ab1a8c8..dd7ebe7a9d 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -7139,6 +7139,16 @@ log_line_prefix = '%m [%p] %q%u@%d/%a '
 </programlisting>
         </para>
        </tip>
+
+       <note>
+        <para>
+         The <literal>%Q</literal> escape always reports a zero identifier
+         for lines output by <xref linkend="guc-log-statement"/> because
+         <varname>log_statement</varname> generates output before an
+         identifier can be calculated, including invalid statements for
+         which an identifier cannot be calculated.
+        </para>
+       </note>
       </listitem>
      </varlistentry>
 
diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c
index 787f062f9c..a368101103 100644
--- a/src/backend/utils/activity/backend_status.c
+++ b/src/backend/utils/activity/backend_status.c
@@ -398,6 +398,7 @@ pgstat_bestart(void)
 	lbeentry.st_state = STATE_UNDEFINED;
 	lbeentry.st_progress_command = PROGRESS_COMMAND_INVALID;
 	lbeentry.st_progress_command_target = InvalidOid;
+	lbeentry.st_query_id = UINT64CONST(0);
 
 	/*
 	 * we don't zero st_progress_param here to save cycles; nobody should
