diff --git a/MiniREST.SQL.SQLDb.pas b/MiniREST.SQL.SQLDb.pas index 58ceb21..e5f4a18 100644 --- a/MiniREST.SQL.SQLDb.pas +++ b/MiniREST.SQL.SQLDb.pas @@ -199,7 +199,9 @@ constructor TMiniRESTSQLConnectionFactorySQLDb.Create(AParams: IMiniRESTSQLConne constructor TMiniRESTSQLConnectionSQLDb.Create(AOwner: IMiniRESTSQLConnectionFactory; AParams: IMiniRESTSQLConnectionParamsSQLDb); begin FSQLConnection := TSQLConnector.Create(nil); - FTransaction := TSQLTransaction.Create(nil); + FTransaction := TSQLTransaction.Create(nil); + if (AParams.GetDatabaseType = dbtFirebird) then + FTransaction.Params.Text := 'isc_tpb_read_committed'; //FTransaction.Options := [stoUseImplicit]; FSQLConnection.Transaction := FTransaction; FSQLConnection.OnLog := Log; diff --git a/unittest/SQL/Test.SQL.Default.pas b/unittest/SQL/Test.SQL.Default.pas index 8d9c520..a4c3f10 100644 --- a/unittest/SQL/Test.SQL.Default.pas +++ b/unittest/SQL/Test.SQL.Default.pas @@ -46,11 +46,7 @@ TMiniRESTSQLTest = class({$IFNDEF FPC}TObject{$ELSE}TTestCase{$IFEND}) {$IFNDEF FPC} [Test] {$IFEND} - procedure TestInsert4; - {$IFNDEF FPC} - [Test] - {$IFEND} - procedure TestInsert5; + procedure TestInsert4; {$IFNDEF FPC} [Test] {$IFEND} @@ -67,6 +63,10 @@ TMiniRESTSQLTest = class({$IFNDEF FPC}TObject{$ELSE}TTestCase{$IFEND}) [Test] {$IFEND} procedure TestTransaction2; + {$IFNDEF FPC} + [Test] + {$IFEND} + procedure TestInsert5; (* {$IFNDEF FPC} [Test] {$IFEND} @@ -487,9 +487,15 @@ procedure TMiniRESTSQLTest.TestInsert4; procedure TMiniRESTSQLTest.TestInsert5; var LConn1: IMiniRESTSQLConnection; + LConn2: IMiniRESTSQLConnection; LQry, LQryID, LQryCheck: IMiniRESTSQLQuery; + LTotal: Integer; begin LConn1 := FConnectionFactory.GetConnection; + LConn2 := FConnectionFactory.GetConnection; + LQryCheck := LConn2.GetQuery('SELECT COUNT(*) AS TOTAL FROM CUSTOMER'); + LQryCheck.Open; + LTotal := LQryCheck.DataSet.FieldByName('TOTAL').AsInteger; LQry := LConn1.GetQuery; LQryID := LConn1.GetQuery; LQry.SQL := 'SELECT * FROM CUSTOMER WHERE 1=0'; @@ -501,13 +507,12 @@ procedure TMiniRESTSQLTest.TestInsert5; LQry.DataSet.Post; LQry.ApplyUpdates(0); - LQryCheck := LConn1.GetQuery('SELECT * FROM CUSTOMER WHERE ID = :ID'); - LQryCheck.ParamByName('ID').AsInteger := 456; + LQryCheck.Close; LQryCheck.Open; {$IFNDEF FPC} - Assert.AreEqual(1, LQryCheck.DataSet.RecordCount); + Assert.AreEqual(LTotal + 1, LQryCheck.DataSet.FieldByName('TOTAL').AsInteger); {$ELSE} - CheckEquals(1, LQryCheck.DataSet.RecordCount); + CheckEquals(LTotal + 1, LQryCheck.DataSet.FieldByName('TOTAL').AsInteger); {$IFEND} end; diff --git a/unittest/TEST.FDB b/unittest/TEST.FDB index 59b1cde..83a8edb 100644 Binary files a/unittest/TEST.FDB and b/unittest/TEST.FDB differ