Hello Lorna,

you have lost your farm: Postgresql does support this! :-)
I.e. with Postgresql you can manipulate ddl within every transaction and roll 
back the whole transaction if an error occurs.
This is a truely professional feature. Even more: If you have to manipulate 
your ddl often (in productive systems), this feature is fundamental!
I did know that Oracle (8.x) did not support this and I was really surprprised 
that time ... what a shame for such a big and expensive system!
As I don't know how hard it is to implement this, I won't suggest ... ;-)

Cheers,
Rainer



Lorna Burnet wrote:

It happens because in hsqlsb, currently, data definition language execution is not 
"transactional"

That is, you cannot roll back table creation, etc.

So, if you issue ddl in the middle of a transaction, this is equivalent to an 
implicit commit.

The same is true of many DBMS, including Oracle, MS SQL Server, etc.  I can't 
say off the top of my head, but I'd bet the farm that the same applies to 
Postgresql, MySQL, etc.  In fact, I think you'd have to really search carefully 
to find the small handfull of systems that actually support ddl operations as 
undoable transaction items.


Where HSQLDB really needs work regarding ddl is not to support undoable itms, but rather to support cross-session ddl locks. For instance, try updating a table inside a transaction in one session, then drop the table inside another session, and then roll back the first session. Likely, you'll get a "table not found" exception in the first transaction, whereas IMO it would probably be better to raise an exception in the second session, stating that one cannot drop or alter the table, because it is in use by another session. ----- Original Message ----- From: Irum Godil <[EMAIL PROTECTED]> Date: Friday, March 11, 2005 11:06 pm Subject: [Hsqldb-developers] Transaction Commit



Hi, I am going through the Hsql Database code, and I noticed that in the class DatabaseCommandInterpreter the call to Session.commit is happening in a few places. One such example is in method:

private void processCreateTable(int type) throws HsqlException {...}

I see that if I have created a table, done some transactions on the table, and now create a new table; then all the transactions made on the first table are committed by call to function:

Session.Commit( )

I do not understand why is this being done. If I have turned AutoCommit to false, then I do not want any commits to happen until I explicitly call commit( ) right? So, if some transactions are being committed, then is not that wrong. How is atomicity of transactions preserved in such a case?

Thanks.





---------------------------------
Do you Yahoo!?
Yahoo! Small Business - Try our new resources site!





------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ hsqldb-developers mailing list hsqldb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hsqldb-developers






------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ hsqldb-developers mailing list hsqldb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hsqldb-developers

Reply via email to