Re: Additional current timestamp values - Mailing list pgsql-patches

From Neil Conway
Subject Re: Additional current timestamp values
Date
Msg-id 441F351E.8030203@samurai.com
Whole thread Raw
In response to Additional current timestamp values  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: Additional current timestamp values  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: Additional current timestamp values  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
Bruce Momjian wrote:
>     <function>CURRENT_TIMESTAMP</> might not be the
>     transaction start time on other database systems.
>     For this reason, and for completeness,
>     <function>transaction_timestamp</> is provided.

Well, transaction_timestamp() is even more unlikely to be the
transaction start time on other database systems :) If the user wants
non-standard syntax for getting the timestamp at which the current
transaction began, we already have now().

> One trick is that these should be the same:
>
>     test=> SELECT statement_timestamp(), transaction_timestamp();

Should they be? It seems quite reasonable to me that the DBMS begins a
transaction internally (setting transaction_timestamp()), and then a
short while later begins executing the statement submitted by the user,
at which point statement_timestamp() is set.

Perhaps ensuring they are identical for single-statement transactions is
the best behavior, I just don't think this is required behavior.

> And these should be the same:
>
>     $ psql -c '
>     INSERT INTO t VALUES (statement_timestamp());
>     INSERT INTO t VALUES (statement_timestamp());' test
>     INSERT 0 1

Uh, why should these be the same?

-Neil

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Removal of backward-compatibility docs mentions
Next
From: Neil Conway
Date:
Subject: Re: Additional current timestamp values