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. -- 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.