Skip site navigation (1) Skip section navigation (2)

Re: Additional current timestamp values

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Neil Conway <neilc(at)samurai(dot)com>
Cc: Brendan Jurd <direvus(at)gmail(dot)com>, pgsql-patches(at)postgresql(dot)org
Subject: Re: Additional current timestamp values
Date: 2006-03-20 23:17:22
Message-ID: 200603202317.k2KNHM110309@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-patches
Neil Conway wrote:
> 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().

True, which is why I brought it up.  I think a good argument can be made
that we don't need two non-standard ways of specifying the transaction
timestamp, but we need to decide that as a group.

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

Yea, perhaps it isn't required, but it seems like a good idea.  It will
avoid confusion and seems logical.  :-)

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

This gets into cases where a single statement generates more than one
parsenode, e.g. rules.  We want all the parse nodes to have the same
timestamp.

We had a long discussion that the statement time isn't really
meaningful/logical, so I went with code that said the statement arrival
time is the proper time to return, and be consistent.

-- 
  Bruce Momjian   http://candle.pha.pa.us
  SRA OSS, Inc.   http://www.sraoss.com

  + If your life is a hard drive, Christ can be your backup. +

In response to

pgsql-hackers by date

Next:From: Bruce MomjianDate: 2006-03-20 23:19:23
Subject: Re: Additional current timestamp values
Previous:From: Neil ConwayDate: 2006-03-20 23:13:45
Subject: Re: Additional current timestamp values

pgsql-patches by date

Next:From: Bruce MomjianDate: 2006-03-20 23:19:23
Subject: Re: Additional current timestamp values
Previous:From: Neil ConwayDate: 2006-03-20 23:13:45
Subject: Re: Additional current timestamp values

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group