Re: Surprising results from tests intended to show the difference in semantics between transaction_timestamp(), statement_timestamp(), and clock_timestamp()

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Surprising results from tests intended to show the difference in semantics between transaction_timestamp(), statement_timestamp(), and clock_timestamp()
Дата
Msg-id a9bda070-a396-4041-7369-d30dc3919e4a@aklaver.com
обсуждение исходный текст
Ответ на Surprising results from tests intended to show the difference in semantics between transaction_timestamp(), statement_timestamp(), and clock_timestamp()  (Bryn Llewellyn <bryn@yugabyte.com>)
Ответы Re: Surprising results from tests intended to show the difference in semantics between transaction_timestamp(), statement_timestamp(), and clock_timestamp()  (Bryn Llewellyn <bryn@yugabyte.com>)
Список pgsql-general
On 9/21/21 4:23 PM, Bryn Llewellyn wrote:
> I'm surprised by the results that I describe below. Please help me 
> interpret them.
> 
> Briefly, why does transaction_timestamp() report a later value 
> than statement_timestamp() when they're both invoked in the very first 
> statement after "start transaction". (They report identical values in an 
> implicitly started txn.)

I'm not seeing it:

test(5432)=# begin;

select
   transaction_timestamp() as txn_11,
   statement_timestamp()   as stm_11,
   clock_timestamp()       as clk_11,
   pg_sleep(0.5)        as dummy,
   transaction_timestamp() as txn_12,
   statement_timestamp()   as stm_12,
   clock_timestamp()       as clk_12;

select pg_sleep(1);

select
   transaction_timestamp() as txn_2,
   statement_timestamp()   as stm_2,
   clock_timestamp()       as clk_2;

commit;

BEGIN
-[ RECORD 1 ]-------------------------
txn_11 | 2021-09-21 17:29:18.272042-07
stm_11 | 2021-09-21 17:29:18.2722-07
clk_11 | 2021-09-21 17:29:18.272297-07
dummy  |
txn_12 | 2021-09-21 17:29:18.272042-07
stm_12 | 2021-09-21 17:29:18.2722-07
clk_12 | 2021-09-21 17:29:18.772863-07

-[ RECORD 1 ]
pg_sleep |

-[ RECORD 1 ]------------------------
txn_2 | 2021-09-21 17:29:18.272042-07
stm_2 | 2021-09-21 17:29:19.774436-07
clk_2 | 2021-09-21 17:29:19.77456-07


No matter how many times I run this the transaction_timestamp() is less 
then statement_timestamp().  This is as it should be, as 
transaction_timestamp() fires with the begin; and statement_timestamp() 
fires at select ... and then updates with the subsequent select .... and 
clock_timestamp() just keeps marching on through the whole process.

-- 
Adrian Klaver
adrian.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Surprising results from tests intended to show the difference in semantics between transaction_timestamp(), statement_timestamp(), and clock_timestamp()
Следующее
От: Bryn Llewellyn
Дата:
Сообщение: Thanks, David! Re: Surprising results from tests intended to show the difference in semantics between transaction_timestamp(), statement_timestamp(), and clock_timestamp()