On Mon, Jul 28, 2025 at 07:35:51PM -0400, Bruce Momjian wrote:
> On Mon, Jul 28, 2025 at 04:24:14PM -0700, Daniel Bauman wrote:
> > Here's where I think the logging is happening. https://github.com/postgres/
> > postgres/blob/master/src/backend/tcop/postgres.c#L1070
> > It seems like the log is happening before application of the transaction, 
> > not
> > after.
> > 
> > So consistency is best effort. ie - a crash after the log but before the
> > transaction is committed could result in a logged statement that wasn't
> > actually committed.
> > 
> > Logging is not handled in the WAL and is not guaranteed to be consistent in 
> > the
> > way that different statements in a transaction are, which is the nuance that
> > I'm interested in documenting.
> > Maybe the doc update should be to say that statements in the log may not 
> > have
> > been applied rather than saying that applied statements might not appear in 
> > the
> > log.
> 
> Yes, right, it is not that we do some "best effort", whatever that
> means, but rather we just log when we start running the statement.  The
> docs clearly explain we log after parsing but before execution:
> 
>          Statements that contain simple syntax errors are not logged even
>          by the <varname>log_statement</varname> = <literal>all</literal>
>          setting, because the log message is emitted only after basic
>          parsing has been done to determine the statement type.

"log_min_duration_statement=0" might be closer to what you want since it
is only printed when the query completes.

-- 
  Bruce Momjian  <br...@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Do not let urgent matters crowd out time for investment in the future.


Reply via email to