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.

Reply via email to