[whatwg] SQL API and closeTransaction()

Brady Eidson beidson at apple.com
Thu Oct 4 19:06:55 PDT 2007


I know there has been a little discussion in the last few weeks on  
this point, but I don't know that anything was decided and the spec is  
certainly still ambiguous.

 From the definition of the Database object -
"void closeTransaction(); // only needed as part of error recovery"

Then later described -
"The closeTransaction() method may be called while in a callback  
called by the executeSql() method. When the method is invoked, it must  
clear any active thread-global transaction..."

This is too vague.

The implication in the Database object spec is that closeTransaction()  
is only meant for error recovery, implying that an explicit call to  
closeTransaction() will always rollback the active thread-global  
transaction.
But the description of the method says closeTransaction() will "clear"  
any active thread-global transaction.  What does "clear" mean?  Does  
this mean commit, or rollback?
If the transaction is marked as bad, "rollback" is obviously  
appropriate - but what if the transaction isn't marked bad?  What if  
the developer just wants to commit the active thread-global  
transaction for his own transactional management?

I don't think the spec would suffer any if closeTransaction() was  
replaced with commitTransaction() and rollbackTransaction().  The only  
additional complexity would be specifying that if the developer tries  
to commit a bad transaction, an exception is thrown.

If we stick with just closeTransaction(), at the very least the spec  
needs to be more precise on what closeTransaction() actually does.

Thanks,
~Brady



More information about the whatwg mailing list