ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/fbintf/client/FBStatement.pas
(Generate patch)

Comparing:
ibx/trunk/fbintf/client/FBStatement.pas (file contents), Revision 359 by tony, Tue Dec 7 09:37:32 2021 UTC vs.
ibx/branches/journaling/fbintf/client/FBStatement.pas (file contents), Revision 363 by tony, Tue Dec 7 13:30:05 2021 UTC

# Line 82 | Line 82 | type
82      procedure CheckChangeBatchRowLimit; virtual;
83      procedure CheckHandle; virtual; abstract;
84      procedure CheckTransaction(aTransaction: ITransaction);
85 +    procedure DoJournaling;
86 +    function GetJournalIntf: IJournallingHook;
87 +    function GetStatementIntf: IStatement; virtual; abstract;
88      procedure GetDsqlInfo(info_request: byte; buffer: ISQLInfoResults); overload; virtual; abstract;
89      procedure InternalPrepare(CursorName: AnsiString='');  virtual; abstract;
90      function InternalExecute(Transaction: ITransaction): IResults;  virtual; abstract;
# Line 171 | Line 174 | begin
174      IBError(ibxeNotInTransaction,[]);
175   end;
176  
177 + procedure TFBStatement.DoJournaling;
178 +  function doGetRowsAffected: integer;
179 +  var a,i,u,d: integer;
180 +  begin
181 +    GetRowsAffected(a,i,u,d);
182 +    Result := i + u + d;
183 +  end;
184 +
185 + var RowsAffected: integer;
186 + begin
187 +  RowsAffected := doGetRowsAffected;
188 +  with GetAttachment do
189 +    if JournalingActive and
190 +      (((joReadOnlyQueries in GetJournalOptions) and (RowsAffected = 0)) or
191 +      ((joModifyQueries in GetJournalOptions) and (RowsAffected > 0))) then
192 +      GetJournalIntf.ExecQuery(GetStatementIntf);
193 + end;
194 +
195 + function TFBStatement.GetJournalIntf: IJournallingHook;
196 + begin
197 +  GetAttachment.QueryInterface(IJournallingHook,Result)
198 + end;
199 +
200   function TFBStatement.TimeStampToMSecs(const TimeStamp: TTimeStamp): Int64;
201   begin
202    Result := TimeStamp.Time + Int64(timestamp.date)*msecsperday;
# Line 334 | Line 360 | begin
360      Result :=  InternalExecute(FTransactionIntf)
361    else
362      Result := InternalExecute(aTransaction);
363 +  DoJournaling;
364   end;
365  
366   procedure TFBStatement.AddToBatch;
# Line 391 | Line 418 | begin
418      Result := InternalOpenCursor(FTransactionIntf,Scrollable)
419    else
420      Result := InternalOpenCursor(aTransaction,Scrollable);
421 +  DoJournaling;
422   end;
423  
424   function TFBStatement.CreateBlob(paramName: AnsiString): IBlob;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines