From: Pierre A. <pie...@op...> - 2004-11-25 07:48:19
|
Hello Carlos, It's me again. Now that I have fixed my code to overcome the batch command execution removal, I have come across another problem/bug in 1.7 : using (IDbTransaction transaction = ...read only transaction...) { command.Transaction = transaction; command.CommandType = System.Data.CommandType.Text; command.CommandText = "CREATE TABLE X_TABLE_1(FIELD VARCHAR(50));"; command.ExecuteNonQuery (); transaction.Commit (); } I expected an exception containing the text "attempted update during read-only transaction" or something similar (in 1.6 it worked), but now I get a invalid reference exception. Here is what happens: (1) FbCommand.ExecuteCommand calls ... GdsConnection.ReadStatusVector which throws the exception I am expecting. (2) FbCommand.ExecuteNonQuery rethrows a FbException with the content I was expecting : Additional information: unsuccessful metadata update STORE RDB$FIELDS failed attempted update during read-only transaction (3) Somehow, FbTransaction.Dispose gets called (by leaving my using block), which in turn calls GdsTransaction.Dispose, which is all OK. (4) Somehow, later, FbCommand.Dispose gets called too. While doing this, FbCommand.Release gets called, which in turn calls GdsStatement.Free(2), but this.db.connection is null at that point, so I get a crash there (line 528). Any idea how to fix that !? Pierre |