On Mon, Jul 14, 2025 at 9:08 AM Tom Lane <t...@sss.pgh.pa.us> wrote:
> "David G. Johnston" <david.g.johns...@gmail.com> writes: > > Cannot readily test this presently but I wonder what the following > produces: > > > psql -c "begin; select statement_timestamp(), transaction_timestamp(); > > select statement_timestamp(), transaction_timestamp(); commit; begin; > > select statement_timestamp(), transaction_timestamp(); commit;" > > > Transaction timestamp should progress while statement timestamp should > not, > > right? > > AFAICT neither one progresses. I think the reason is that (1) > statement timestamp is set by arrival of the command message > and (2) transaction timestamp is set by copying statement timestamp > at the moment of beginning a transaction. > > Ok. That explains why "statement_timestamp() and transaction_timestamp() return the same value during the first command of a transaction," isn't just stating the obvious. transaction_timestamp() literally returns the value statement_timestamp(). But when talking about current_timestamp first and saying "Since these functions return the start time of the current transaction" it does read more as coincidence as opposed to definition. I'm fine with this entire section assuming/stating that extended protocol is in effect and that 53.2.2.1 explains how these behave when executing a multi-statement simple protocol "script". David J.