ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/fbintf/client/FBMessages.pas
Revision: 362
Committed: Tue Dec 7 13:27:39 2021 UTC (2 years, 11 months ago) by tony
Content type: text/x-pascal
File size: 15666 byte(s)
Log Message:
initiate test release

File Contents

# Content
1 (*
2 * Firebird Interface (fbintf). The fbintf components provide a set of
3 * Pascal language bindings for the Firebird API. Although predominantly
4 * a new development they include source code taken from IBX and may be
5 * considered a derived product. This software thus also includes the copyright
6 * notice and license conditions from IBX.
7 *
8 * Except for those parts dervied from IBX, contents of this file are subject
9 * to the Initial Developer's Public License Version 1.0 (the "License"); you
10 * may not use this file except in compliance with the License. You may obtain a
11 * copy of the License here:
12 *
13 * http://www.firebirdsql.org/index.php?op=doc&id=idpl
14 *
15 * Software distributed under the License is distributed on an "AS
16 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17 * implied. See the License for the specific language governing rights
18 * and limitations under the License.
19 *
20 * The Initial Developer of the Original Code is Tony Whyman.
21 *
22 * The Original Code is (C) 2016 Tony Whyman, MWA Software
23 * (http://www.mwasoftware.co.uk).
24 *
25 * All Rights Reserved.
26 *
27 * Contributor(s): ______________________________________.
28 *
29 *)
30 {************************************************************************}
31 { }
32 { Borland Delphi Visual Component Library }
33 { InterBase Express core components }
34 { }
35 { Copyright (c) 1998-2000 Inprise Corporation }
36 { }
37 { InterBase Express is based in part on the product }
38 { Free IB Components, written by Gregory H. Deatz for }
39 { Hoagland, Longo, Moran, Dunst & Doukas Company. }
40 { Free IB Components is used under license. }
41 { }
42 { The contents of this file are subject to the InterBase }
43 { Public License Version 1.0 (the "License"); you may not }
44 { use this file except in compliance with the License. You }
45 { may obtain a copy of the License at http://www.Inprise.com/IPL.html }
46 { Software distributed under the License is distributed on }
47 { an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either }
48 { express or implied. See the License for the specific language }
49 { governing rights and limitations under the License. }
50 { The Original Code was created by InterBase Software Corporation }
51 { and its successors. }
52 { Portions created by Inprise Corporation are Copyright (C) Inprise }
53 { Corporation. All Rights Reserved. }
54 { Contributor(s): Jeff Overcash }
55 { }
56 { IBX For Lazarus (Firebird Express) }
57 { Contributor: Tony Whyman, MWA Software http://www.mwasoftware.co.uk }
58 { Portions created by MWA Software are copyright McCallum Whyman }
59 { Associates Ltd 2011 - 2015 }
60 { }
61 {************************************************************************}
62 unit FBMessages;
63 {$IFDEF MSWINDOWS}
64 {$DEFINE WINDOWS}
65 {$ENDIF}
66
67 {$IFDEF FPC}
68 {$mode delphi}
69 {$codepage UTF8}
70 {$ENDIF}
71
72 interface
73
74 uses
75 Classes, SysUtils;
76
77 type
78 TIBClientError = (
79 ibxeInterBaseMissing,
80 ibxeIB60feature,
81 ibxeNotSupported,
82 ibxeNotPermitted,
83 ibxeDatabaseClosed,
84 ibxeNotInTransaction,
85 ibxeTransactionNotAssigned,
86 ibxeEOF,
87 ibxeBOF,
88 ibxeInvalidStatementHandle,
89 ibxeSQLClosed,
90 ibxeUnknownSQLDataType,
91 ibxeInvalidColumnIndex,
92 ibxeInvalidDataConversion,
93 ibxeBlobCannotBeRead,
94 ibxeBlobCannotBeWritten,
95 ibxeBlobNotOpen,
96 ibxeEmptyQuery,
97 ibxeFieldNotFound,
98 ibxeSQLParseError,
99 ibxeIsASelectStatement,
100 ibxeIsAExecuteProcedure,
101 ibxeMaximumEvents,
102 ibxeServiceActive,
103 ibxeServiceInActive,
104 ibxeServerNameMissing,
105 ibxeOutputParsingError,
106 ibxeEmptyAttachmentsList,
107 ibxeInfoBufferTypeError,
108 ibxServiceRequestIndexError,
109 ibxServiceParamTypeError,
110 ibxeOutputBlockIndexError,
111 ibxeOutputBlockTypeError,
112 ibxePBIndexError,
113 ibxePBParamTypeError,
114 ibxeDuplicateParamName,
115 ibxeInvalidArrayDimensions,
116 ibxeNotAMultiDatabaseTransaction,
117 ibxeAttachmentListIndexError,
118 ibxeNotAnArray,
119 ibxeNotABlob,
120 ibxeInvalidSubscript,
121 ibxeArrayElementOverFlow,
122 ibxArrayBoundsCantIncrease ,
123 ibxeStatementNotPrepared,
124 ibxeInterfaceOutofDate,
125 ibxeInvalidBlobMetaData,
126 ibxeNoDPB,
127 ibxeInEventWait,
128 ibxeIncompatibleBlob,
129 ibxeMissingColumnName,
130 ibxStringTooLong,
131 ibxFieldNotinDataSet,
132 ibxeNoDefaultCharacterSet,
133 ibxeParamBufferOverflow,
134 ibxeInvalidParamCount,
135 ibxeInvalidVariantType,
136 ibxeInterfaceNotSupported,
137 ibxeCharacterSetExists,
138 ibxeUnknownUserCharSet,
139 ibxeUninitializedInputParameter,
140 ibxeMultiThreadRequired,
141 ibxeTokenQueueOverflow,
142 ibxeTokenQueueUnderflow,
143 ibxErrorParsing,
144 ibxeDLInfoError,
145 ibxeDifferentAPIs,
146 ibxeInvalidDateTimeStr,
147 ibxeBadTimeZoneID,
148 ibxeBadBCDConversion,
149 ibxeBadTimeZoneName,
150 ibxeTimeZoneUnknown,
151 ibxeBadTimeSpecification,
152 ibxeBCDTooBig,
153 ibxeInvalidTimeZoneID,
154 ibxeBadTimestampOrNoTimeZoneDBEntry,
155 ibxeBCDOverflow,
156 ibxeNoTimezoneSupport,
157 ibxeDecFloatNotSupported,
158 ibxeInt128NotSupported,
159 ibxeUnknownParamTypeName,
160 ibxInvalidQueryAction,
161 ibxeSQLTypeUnchangeable,
162 ibxeCannotIncreaseMetadatasize,
163 ibxeBatchModeNotSupported,
164 ibxeNotInBatchMode,
165 ibxeInBatchMode,
166 ibxeInvalidBatchQuery,
167 ibxeBatchRowBufferOverflow,
168 ibxeBatchBufferSizeTooBig,
169 ibxeNoScrollableCursors
170 );
171
172 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
173
174 {IBError is used internally and by IBX to throw an EIBClientError}
175
176 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
177
178 resourcestring
179 { generic strings used in code }
180 SParamNameExpected = 'Parameter name expected';
181 sSQLErrorSeparator = ' When Executing: ';
182 SFirebirdAPIFuncNotFound = 'Unable to load Firebird Client Library Function "%s"';
183 STrue = 'true';
184 SFalse = 'false';
185 SArray = '(array)';
186 SBatchCompletionError = 'Error Processing update/insert batch on row number %d - ';
187
188 implementation
189
190 uses IBUtils, IB;
191
192 resourcestring
193
194 { strings used in error messages}
195 SInterBaseMissing = 'Firebird library not found in the path. Please install Firebird to use this functionality';
196 SIB60feature = '%s is an InterBase 6 function. Please upgrade to InterBase 6 to use this functonality';
197 SNotSupported = 'Unsupported feature';
198 SNotPermitted = 'Not permitted';
199 SDatabaseClosed = 'Cannot perform operation -- DB is not open';
200 SNotInTransaction = 'Transaction is not active';
201 STransactionNotAssigned = 'Transaction not assigned';
202 SEOF = 'End of file';
203 SBOF = 'Beginning of file';
204 SInvalidStatementHandle = 'Invalid statement handle';
205 SSQLClosed = 'IBSQL Closed';
206 SUnknownSQLDataType = 'Unknown SQL Data type (%d)';
207 SInvalidColumnIndex = 'Invalid column index (index exceeds permitted range)';
208 SInvalidDataConversion = 'Invalid data conversion from %s';
209 SBlobCannotBeRead = 'Blob stream cannot be read';
210 SBlobCannotBeWritten = 'Blob stream cannot be written';
211 SBlobNotOpen = 'The Blob is not open';
212 SEmptyQuery = 'Empty query';
213 SFieldNotFound = 'Field "%s" not found';
214 SSQLParseError = 'SQL Parse Error:' + CRLF + CRLF + '%s';
215 SIsASelectStatement = 'use Open for a Select Statement';
216 SIsAExecuteProcedure = 'use ExecProc for Procedure; use TQuery for Select procedures';
217 SMaximumEvents = 'Exceded Maximum Event limits';
218 SServiceActive = 'Cannot perform operation -- service is not attached';
219 SServiceInActive = 'Cannot perform operation -- service is attached';
220 SServerNameMissing = 'Server Name Missing';
221 SOutputParsingError = 'Unexpected Output buffer value (%d) - %s';
222 SEmptyAttachmentsList = 'The list of database attachments cannot be empty';
223 SInfoBufferTypeError = 'Invalid operation for Info Buffer Type (%d)';
224 SServiceRequestIndexError = 'Service Request Index Out of Range (%d)';
225 SServiceParamTypeError = 'Invalid Request for Service Param Type';
226 SOutputBlockIndexError = 'Output Block Index Out of Range (%d)';
227 SOutputBlockTypeError = 'Invalid Request for Output Block Type';
228 SPBIndexError = 'DPB Index out of range (%d)';
229 SPBParamTypeError = 'Invalid Request for DPB Param Type';
230 SDuplicateParamName = 'Blob or array parameter name must be unique (%s)';
231 SInvalidArrayDimensions = 'Invalid number of array dimensions (%d)';
232 SNotAMultiDatabaseTransaction = 'This is not a multi-database transaction';
233 SAttachmentListIndexError = 'Attachment List index out of range (%d)';
234 SNotAnArray = 'Table Column must be an array';
235 SNotABlob = 'Table Column must be a Blob';
236 SInvalidSubscript = 'Invalid Subscript (%d) for Array Dimension %d';
237 SArrayElementOverFlow = 'Array Element too big';
238 SArrayBoundsCantIncrease = 'Array Bounds can only be narrowed';
239 SStatementNotPrepared = 'The Statement has not been prepared';
240 SInterfaceOutofDate = 'This interface is no longer up-to-date';
241 SInvalidBlobMetaData = 'Unable to Access Blob Meta Data';
242 SNoDPB = 'A DPB must be provided';
243 SInEventWait = 'Already in Event Wait State';
244 SIncompatibleBlob = 'Incompatible Blob SubTypes. %d expected, %d found';
245 SMissingColumnName = 'Relation or Column Name Missing';
246 SStringTooLong = 'String "%s" is too long. Max %d characters';
247 SFieldNotinDataSet = 'Field %s is not a member of DataSet %s';
248 SNoDefaultCharacterSet = 'A connection default character set is required to perform this operation';
249 SParamBufferOverflow = 'Parameter Buffer Overflow';
250 SInvalidParamCount = 'Invalid Parameter Count. %d expected, %d found';
251 SInvalidVariantType = 'Invalid variant type';
252 SInterfaceNotSupported = 'Interface not supported; Guid %s not found';
253 SCharacterSetExists = 'Character set "%s" is already defined';
254 SUnknownUserCharSet = 'Unknown user character set "%s"';
255 SUninitializedInputParameter = 'SQL Param No. %d (%s) is uninitialised';
256 SMultiThreadRequired = 'Multi-threading required for %s but not enabled. Please recompile with multi-threading support enabled. '+
257 'Hint: you probably need to add -dUseCThreads to the Custom Options.';
258 STokenQueueOverflow = 'Error in SQL Token Analyser - token queue overflow';
259 STokenQueueUnderflow = 'Error in SQL Token Analyser - token queue underflow';
260 SErrorParsing = 'Error parsing SQL Statement at clause starting with %s';
261 SDLInfoError = 'dlinfo returned error - %s';
262 SDifferentAPIs = 'All transaction attachments must use the same Firebird Library';
263 SInvalidDateTimeStr = '%s is not a valid Date/Time string';
264 SBadTimeZoneID = 'Invalid Time Zone ID (%d,%d)';
265 SBadBCDConversion = 'Conversion to BCD failed';
266 SBadTimeZoneName = 'Invalid Time Zone Name "%s"';
267 STimeZoneUnknown = 'Time Zone Unknown';
268 SBadTimeSpecification = '%d:%d:%d.%d is not a valid time specification';
269 SBCDTooBig = 'BCD Precision (%d) is too large for Firebird Data Type max precision (%d)';
270 SInvalidTimeZoneID = 'Invalid Time Zone ID (%d)';
271 SBadTimestampOrNoTimeZoneDBEntry = 'Bad Timestamp or missing time zone DB entry (%s) TZ ID = %d';
272 SBCDOverflow = 'BCD Precision too large for Firebird data type,[%s]';
273 SNoTimezoneSupport = 'TIME/TIMESTAMP WITH TIME ZONE data type not supported';
274 SDecFloatNotSupported = 'DecFloat Data Type not supported';
275 SInt128NotSupported = 'INT128 Data Type not supported';
276 SUnknownParamTypeName = '%s:Unknown Param Type Name "%s"';
277 SInvalidQueryAction = 'Query Action only valid for an Update or Insert Query';
278 SSQLTypeUnchangeable = 'Cannot change SQL Type from %s to %s';
279 SCannotIncreaseMetadatasize = 'Cannot increase Metadata size from %d to %d';
280 SBatchModeNotSupported = 'Batch Mode is not available. Firebird 4 or later client and server is required';
281 SNotInBatchMode = 'Not in Batch Mode - have you called AddToBatch?';
282 SInBatchMode = 'Invalid Operation: a Batch is pending';
283 SInvalidBatchQuery = 'This query type (%s) cannot be batched';
284 SBatchRowBufferOverflow = 'Adding Row No. %d - batch buffer size limit (%d bytes) exceeded';
285 SBatchBufferSizeTooBig = 'Requested Batch Buffer Size (%d bytes) exceeds 256MB limit';
286 SNoScrollableCursors = 'Scrollable cursors are not supported';
287
288 const
289 IBErrorMessages: array[TIBClientError] of string = (
290 SInterBaseMissing,
291 SIB60feature,
292 SNotSupported,
293 SNotPermitted,
294 SDatabaseClosed,
295 SNotInTransaction,
296 STransactionNotAssigned,
297 SEOF,
298 SBOF,
299 SInvalidStatementHandle,
300 SSQLClosed,
301 SUnknownSQLDataType,
302 SInvalidColumnIndex,
303 SInvalidDataConversion,
304 SBlobCannotBeRead,
305 SBlobCannotBeWritten,
306 SBlobNotOpen,
307 SEmptyQuery,
308 SFieldNotFound,
309 SSQLParseError,
310 SIsASelectStatement,
311 SIsAExecuteProcedure,
312 SMaximumEvents,
313 SServiceActive,
314 SServiceInActive,
315 SServerNameMissing,
316 SOutputParsingError,
317 SEmptyAttachmentsList,
318 SInfoBufferTypeError,
319 SServiceRequestIndexError,
320 SServiceParamTypeError,
321 SOutputBlockIndexError,
322 SOutputBlockTypeError,
323 SPBIndexError,
324 SPBParamTypeError,
325 SDuplicateParamName,
326 SInvalidArrayDimensions,
327 SNotAMultiDatabaseTransaction,
328 SAttachmentListIndexError,
329 SNotAnArray,
330 SNotABlob,
331 SInvalidSubscript,
332 SArrayElementOverFlow,
333 SArrayBoundsCantIncrease,
334 SStatementNotPrepared,
335 SInterfaceOutofDate,
336 SInvalidBlobMetaData,
337 SNoDPB,
338 SInEventWait,
339 SIncompatibleBlob,
340 SMissingColumnName,
341 SStringTooLong,
342 SFieldNotinDataSet,
343 SNoDefaultCharacterSet,
344 SParamBufferOverflow,
345 SInvalidParamCount,
346 SInvalidVariantType,
347 SInterfaceNotSupported,
348 SCharacterSetExists,
349 SUnknownUserCharSet,
350 SUninitializedInputParameter,
351 SMultiThreadRequired,
352 STokenQueueOverflow,
353 STokenQueueUnderflow,
354 SErrorParsing,
355 SDLInfoError,
356 SDifferentAPIs,
357 SInvalidDateTimeStr,
358 SBadTimeZoneID,
359 SBadBCDConversion,
360 SBadTimeZoneName,
361 STimeZoneUnknown,
362 SBadTimeSpecification,
363 SBCDTooBig,
364 SInvalidTimeZoneID,
365 SBadTimestampOrNoTimeZoneDBEntry,
366 SBCDOverflow,
367 SNoTimezoneSupport,
368 SDecFloatNotSupported,
369 SInt128NotSupported,
370 SUnknownParamTypeName,
371 SInvalidQueryAction,
372 SSQLTypeUnchangeable,
373 SCannotIncreaseMetadatasize,
374 SBatchModeNotSupported,
375 SNotInBatchMode,
376 SInBatchMode,
377 SInvalidBatchQuery,
378 SBatchRowBufferOverflow,
379 SBatchBufferSizeTooBig,
380 SNoScrollableCursors
381 );
382
383 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
384 begin
385 Result := IBErrorMessages[ErrMess];
386 end;
387
388 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
389 begin
390 raise EIBClientError.Create(Ord(ErrMess),
391 Format(GetErrorMessage(ErrMess), Args));
392 end;
393
394
395 end.
396