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