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

Comparing ibx/trunk/fbintf/client/2.5/FB25Statement.pas (file contents):
Revision 309 by tony, Tue Jul 21 08:00:42 2020 UTC vs.
Revision 315 by tony, Thu Feb 25 11:56:36 2021 UTC

# Line 128 | Line 128 | type
128      FOwnsSQLData: boolean;
129      FBlobMetaData: IBlobMetaData;
130      FArrayMetaData: IArrayMetaData;
131 +    FMetadataSize: short; {size of field from metadata}
132      FXSQLVAR: PXSQLVAR;       { Points to the PXSQLVAR in the owner object }
133    protected
134      function GetSQLType: cardinal; override;
# Line 144 | Line 145 | type
145      function GetIsNullable: boolean; override;
146      function GetSQLData: PByte;  override;
147      function GetDataLength: cardinal; override;
148 +    function GetSize: cardinal; override;
149      procedure SetIsNull(Value: Boolean); override;
150      procedure SetIsNullable(Value: Boolean);  override;
151      procedure SetSQLData(AValue: PByte; len: cardinal); override;
# Line 383 | Line 385 | begin
385    Result := FXSQLVAR^.sqllen;
386   end;
387  
388 + function TIBXSQLVAR.GetSize: cardinal;
389 + begin
390 +  Result := FMetadataSize;
391 + end;
392 +
393   function TIBXSQLVAR.GetArrayMetaData: IArrayMetaData;
394   begin
395    if GetSQLType <> SQL_ARRAY then
# Line 456 | Line 463 | begin
463    FOwnsSQLData := true;
464    with FFirebird25ClientAPI, FXSQLVar^ do
465    begin
466 +    FMetadataSize := sqllen;
467      case sqltype and (not 1) of
468        SQL_TEXT, SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TIMESTAMP,
469        SQL_BLOB, SQL_ARRAY, SQL_QUAD, SQL_SHORT, SQL_BOOLEAN,
# Line 980 | Line 988 | begin
988        if (FHandle <> nil) then
989          FreeHandle;
990        if E is EIBInterBaseError then
991 <        raise EIBInterBaseError.Create(EIBInterBaseError(E).SQLCode,
992 <                                       EIBInterBaseError(E).IBErrorCode,
985 <                                       EIBInterBaseError(E).Message +
986 <                                       sSQLErrorSeparator + FSQL)
987 <      else
988 <        raise;
991 >        E.Message := E.Message + sSQLErrorSeparator + FSQL;
992 >      raise;
993      end;
994    end;
995    FPrepared := true;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines