On 6/9/05, Jeremiah Gowdy wrote:
> >
> > Does this seem to break SQL / application logic in some fashion?
> 
> >Not worse then it is currently broken :)
> >
> >According to the SQL standard CURRENT_TIMESTAMP, which in MySQL is a
> >synonym for NOW(), is supposed to have a value that does not change
> >during a transaction. At which point during the transaction that value
> >is 'sampled' is implementation defined. (ISO/IEC 9075:2003-2 section
> >6.31)
> >
> >Since both NOW() and INSERT DELAYED are MySQL extensions I don't
> >particularly care how they behave/interfere, but I would prefer any
> >solution/hack not to complicate MySQL ever becomming standard
> >compliant in this regard (and standard compliance is an official
> >goal).
> 
> Does the standard specify when the timestamp is evaluated?

During the transaction.


> I agree that it might be better for it to be a seperate function, but since
> DELAYED isn't part of the standard, I'm not sure there's anything that keeps
> an implementation from evaluating the CURRENT_TIMESTAMP for a query upon
> receipt of the query from the network, rather than when the SQL statement is
> evaluated.

Let me reiterate:
"Since both NOW() and INSERT DELAYED are MySQL extensions I don't
particularly care how they behave/interfere".


> If I wrote a SQL server from scratch, would this not
> be a valid implementation, to timestamp upon network receive of a complete
> query, rather than upon finding the CURRENT_TIMESTAMP (or NOW()) function
> while parsing a query?

That depends on some more implementation issues: perceivably your
network receive could even be before the start of the transaction.
Evaluate CURRENT_TIMESTAMP only once per transaction, between the
start of the transaction and the end of the transaction.

Jochem

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to