Tim, I am not sure either why is your incomplete transaction not getting
rolled back. I tried a very simple test case in ij and was able to confirm
the partial transaction rollback. Here is what I did

Start a transaction and insert some rows but Ctrl-C out of it so the
transaction should be marked incomplete.

$ java org.apache.derby.tools.ij
ij version 10.3
ij> connect 'jdbc:derby:c:/dellater/db1';
ij> select * from t1;
C11
-----------

0 rows selected
ij> autocommit off;
ij> insert into t1 values (1),(2);
2 rows inserted/updated/deleted
ij>
$

I Ctrl-Ced out of the ij session above. Later, in the following ij session,
when I do select * from t1, I don't see the rows from the partial
transaction above.
$ java org.apache.derby.tools.ij
ij version 10.3
ij> connect 'jdbc:derby:c:/dellater/db1';
ij> select * from t1;
C11
-----------

0 rows selected
ij> exit;
$
So, I am not sure why you don't see the same behavior with your partial
transaction. Do you have a simple reproducible test case?

Mamta


On 2/5/07, Tim Gleason <[EMAIL PROTECTED]> wrote:

I'm doing something I think is pretty simple, but I'm getting
unexpected results.  After a few hours of googling, I still don't
understand what I don't understand ;)  So, I'm sorry for spamming this
list if this is a dumb question.

I'm using derby via embedded JDBC.  I do a bunch of work in a single
transaction, then commit.  If the system fails during the operation of
a single transaction, I expect a rollback on system restart (for
embedded, I /assume/ that means once I've connected to the db again --
but this might be my problem).

In testing my system, I killed the process in the middle of the
transaction.  On restart, I expected all of the work done in that
(partial) transaction to be removed.  But it wasn't.  The affects were
still there -- and visible to a new transaction.  This is not what I
would expect.

Is there something specific that needs to be done to force derby to
roll back incomplete transactions?  Is this specific to embedded
derby?  Is there something simple I'm missing?  [In case anyone
wonders, yes I did set autocommit to false on the JDBC connection.]

Thanks for your help,
tim

Reply via email to