diff --git a/packages/fcl-db/src/base/bufdataset.pas b/packages/fcl-db/src/base/bufdataset.pas index 6b0c58cd32..a77e31b8f9 100644 --- a/packages/fcl-db/src/base/bufdataset.pas +++ b/packages/fcl-db/src/base/bufdataset.pas @@ -558,7 +558,6 @@ type procedure SetReadOnly(AValue: Boolean); virtual; function IsReadFromPacket : Boolean; function getnextpacket : integer; - procedure ActiveBufferToRecord; function GetPacketReader(const Format: TDataPacketFormat; const AStream: TStream): TDataPacketReader; virtual; // abstracts, must be overidden by descendents function Fetch : boolean; virtual; @@ -2553,7 +2552,8 @@ begin FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := nil; end; end; - ActiveBufferToRecord; + + Move(ActiveBuffer^, FCurrentIndex.CurrentBuffer^, FRecordSize); // new data are now in current record so reorder current record if needed for i := 1 to FIndexesCount-1 do @@ -2561,12 +2561,6 @@ begin FIndexes[i].OrderCurrentRecord; end; -procedure TCustomBufDataset.ActiveBufferToRecord; - -begin - move(ActiveBuffer^,FCurrentIndex.CurrentBuffer^,FRecordSize); -end; - procedure TCustomBufDataset.CalcRecordSize; var x : longint; @@ -2844,23 +2838,19 @@ function TCustomBufDataset.CreateBlobStream(Field: TField; Mode: TBlobStreamMode var bufblob : TBufBlobField; begin - result := nil; - if Mode = bmRead then - begin - if not Field.GetData(@bufblob) then - exit; - - result := TBufBlobStream.Create(Field as TBlobField, bmRead); - end - else if Mode = bmWrite then - begin - if not (State in [dsEdit, dsInsert, dsFilter, dsCalcFields]) then - DatabaseErrorFmt(SNotEditing, [Name], Self); - if Field.ReadOnly and not (State in [dsSetKey, dsFilter]) then - DatabaseErrorFmt(SReadOnlyField, [Field.DisplayName]); - - result := TBufBlobStream.Create(Field as TBlobField, bmWrite); - end; + Result := nil; + case Mode of + bmRead: + if not Field.GetData(@bufblob) then Exit; + bmWrite: + begin + if not (State in [dsEdit, dsInsert, dsFilter, dsCalcFields]) then + DatabaseErrorFmt(SNotEditing, [Name], Self); + if Field.ReadOnly and not (State in [dsSetKey, dsFilter]) then + DatabaseErrorFmt(SReadOnlyField, [Field.DisplayName]); + end; + end; + Result := TBufBlobStream.Create(Field as TBlobField, Mode); end; procedure TCustomBufDataset.SetDatasetPacket(AReader: TDataPacketReader); diff --git a/packages/fcl-db/src/sqldb/sqldb.pp b/packages/fcl-db/src/sqldb/sqldb.pp index d8e7e82e81..1b24e0835c 100644 --- a/packages/fcl-db/src/sqldb/sqldb.pp +++ b/packages/fcl-db/src/sqldb/sqldb.pp @@ -159,7 +159,6 @@ type FStatements : TFPList; FLogEvents: TDBEventTypes; FOnLog: TDBLogNotifyEvent; - FInternalTransaction : TSQLTransaction; function GetPort: cardinal; procedure SetOptions(AValue: TSQLConnectionOptions); procedure SetPort(const AValue: cardinal); @@ -2842,7 +2841,7 @@ end; procedure TCustomSQLQuery.ApplyRecUpdate(UpdateKind: TUpdateKind); Var - DoRefresh, RecordRefreshed : Boolean; + DoRefresh : Boolean; LastIDField : TField; S : TDataSetState; @@ -2862,17 +2861,13 @@ begin // TDataSet buffers are resynchronized at end of ApplyUpdates process S:=SetTempState(dsRefreshFields); try - RecordRefreshed:=False; if assigned(LastIDField) then - RecordRefreshed:=RefreshLastInsertID(LastIDField); + RefreshLastInsertID(LastIDField); if DoRefresh then - RecordRefreshed:=RefreshRecord(UpdateKind) or RecordRefreshed; + RefreshRecord(UpdateKind); finally RestoreState(S); end; - if RecordRefreshed then - // Active buffer is updated, move to record. - //ActiveBufferToRecord; end; end; diff --git a/packages/fcl-db/tests/testspecifictbufdataset.pas b/packages/fcl-db/tests/testspecifictbufdataset.pas index a5355e01f2..c2e40f89a1 100644 --- a/packages/fcl-db/tests/testspecifictbufdataset.pas +++ b/packages/fcl-db/tests/testspecifictbufdataset.pas @@ -13,7 +13,7 @@ interface uses {$IFDEF FPC} - fpcunit, testutils, testregistry, testdecorator, BufDataset, + fpcunit, testregistry, BufDataset, {$ELSE FPC} TestFramework, {$ENDIF FPC} @@ -49,7 +49,6 @@ uses // {$endif fpc} variants, - strutils, FmtBCD; { TTestSpecificTBufDataset }