rsfbclient_rust/
consts.rs

1//! Wire protocol constants
2
3#![allow(dead_code)]
4
5use num_enum::TryFromPrimitive;
6
7#[derive(Debug, Clone, Copy, Ord, PartialOrd, Eq, PartialEq, TryFromPrimitive)]
8#[repr(u32)]
9pub enum ProtocolVersion {
10    V10 = 0x0000000A,
11    V11 = 0xFFFF800B,
12    V12 = 0xFFFF800C,
13    V13 = 0xFFFF800D,
14}
15
16#[derive(Debug, TryFromPrimitive)]
17#[repr(u8)]
18/// Wire protocol operation
19pub enum WireOp {
20    /// Connect to remote server
21    Connect = 1,
22    /// Remote end has exitted
23    Exit = 2,
24    /// Server accepts connection
25    Accept = 3,
26    /// Server rejects connection
27    Reject = 4,
28    /// Connect is going away
29    Disconnect = 6,
30    /// Generic response block
31    Response = 9,
32
33    /// Attach database
34    Attach = 19,
35    /// Create database
36    Create = 20,
37    /// Detach database
38    Detach = 21,
39
40    /// Transaction operations
41    Transaction = 29,
42    /// Commit transaction
43    Commit = 30,
44    /// Rollback transaction
45    Rollback = 31,
46
47    /// Create a blob
48    CreateBlob = 34,
49    /// Open a blob
50    OpenBlob = 35,
51    /// Get blob segment
52    GetSegment = 36,
53    /// Put blob segment
54    PutSegment = 37,
55    /// Cancel a blob
56    CancelBlob = 38,
57    /// Close a blob
58    CloseBlob = 39,
59
60    /// Get informations of the database
61    InfoDatabase = 40,
62    /// Get informations of the transaction
63    InfoTransaction = 42,
64
65    /// Put multiple blob segments
66    BatchSegments = 44,
67    /// Que event notification request
68    QueEvents = 48,
69    /// Cancel event notification request
70    CancelEvents = 49,
71    /// Commit transaction, allowing to reuse it
72    CommitRetaining = 50,
73    /// Completed event request (asynchronous)
74    Event = 52,
75    /// Request to establish connection
76    ConnectRequest = 53,
77    /// Open blob v2
78    OpenBlob2 = 56,
79    /// Create blob v2
80    CreateBlob2 = 57,
81
82    /// Allocate a statment handle
83    AllocateStatement = 62,
84    /// Execute a prepared statement
85    Execute = 63,
86    /// Execute a statement
87    ExecImmediate = 64,
88    /// Fetch a record
89    Fetch = 65,
90    /// Response for record fetch
91    FetchResponse = 66,
92    /// Free a statement
93    FreeStatement = 67,
94    /// Prepare a statement
95    PrepareStatement = 68,
96    /// Statement info
97    InfoSql = 70,
98
99    /// Dummy packet to detect loss of client
100    Dummy = 71,
101
102    /// Execute a prepared statement, enables data coercion
103    Execute2 = 76,
104
105    /// Response from execute, exec immed, insert
106    SqlResponse = 78,
107    /// Drop database request
108    DropDatabase = 81,
109    ServiceAttach = 82,
110    ServiceDetach = 83,
111    ServiceInfo = 84,
112    ServiceStart = 85,
113    /// Rollback transaction, allowing to reuse it
114    RollbackRetaining = 86,
115
116    /// packet is not complete - delay processing
117    Partial = 89,
118    TrustedAuth = 90,
119    Cancel = 91,
120
121    /// Continue authentication
122    ContAuth = 92,
123
124    Ping = 93,
125
126    /// Server accepts connection and returns some data to client
127    AcceptData = 94,
128
129    /// Async operation - stop waiting for async connection to arrive
130    AbortAuxConnection = 95,
131    Crypt = 96,
132    CryptKeyCallback = 97,
133
134    /// Server accepts connection, returns some data to client
135    /// and asks client to continue authentication before attach call
136    CondAccept = 98,
137}
138
139#[derive(Debug)]
140#[repr(u8)]
141/// User identification data
142///
143/// Format: `type` `length` 'data'
144///
145/// * `type`      is a u8 (this enum)
146/// * `length`    is an u8 containing length of data
147/// * `data`      is 'type' specific
148pub enum Cnct {
149    /// User name
150    User = 1,
151    Passwd = 2,
152    Host = 4,
153    /// Effective Unix group id
154    Group = 5,
155    /// Attach / Create using this connection
156    UserVerification = 6,
157    /// Some data, needed for user verification on server
158    SpecificData = 7,
159    /// Name of plugin, which generated that data
160    PluginName = 8,
161    /// Database user name
162    Login = 9,
163    /// List of plugins available on client
164    PluginList = 10,
165    /// Client encyption level (DISABLED / ENABLED / REQUIRED)
166    ClientCrypt = 11,
167}
168
169#[derive(Debug)]
170pub enum AuthPluginType {
171    Srp256,
172    Srp,
173}
174
175impl AuthPluginType {
176    /// Plugin name
177    pub fn name(&self) -> &'static str {
178        match self {
179            Self::Srp256 => "Srp256",
180            Self::Srp => "Srp",
181        }
182    }
183
184    /// List with the plugins
185    pub fn plugin_list() -> String {
186        [AuthPluginType::Srp.name(), AuthPluginType::Srp256.name()].join(",")
187    }
188
189    pub fn parse(name: &[u8]) -> Result<Self, rsfbclient_core::FbError> {
190        match name {
191            b"Srp256" => Ok(Self::Srp256),
192            b"Srp" => Ok(Self::Srp),
193
194            name => Err(format!("Invalid auth plugin: {}", String::from_utf8_lossy(name)).into()),
195        }
196    }
197}
198
199#[cfg(not(tarpaulin_include))]
200/// Converts a gds_code to a error message
201pub fn gds_to_msg(gds_code: u32) -> &'static str {
202    match gds_code {
203        335544321 => "arithmetic exception, numeric overflow, or string truncation\n",
204        335544322 => "invalid database key\n",
205        335544323 => "file @1 is not a valid database\n",
206        335544324 => "invalid database handle (no active connection)\n",
207        335544325 => "bad parameters on attach or create database\n",
208        335544326 => "unrecognized database parameter block\n",
209        335544327 => "invalid request handle\n",
210        335544328 => "invalid BLOB handle\n",
211        335544329 => "invalid BLOB ID\n",
212        335544330 => "invalid parameter in transaction parameter block\n",
213        335544331 => "invalid format for transaction parameter block\n",
214        335544332 => "invalid transaction handle (expecting explicit transaction start)\n",
215        335544333 => "internal Firebird consistency check (@1)\n",
216        335544334 => "conversion error from string '@1'\n",
217        335544335 => "database file appears corrupt (@1)\n",
218        335544336 => "deadlock\n",
219        335544337 => "attempt to start more than @1 transactions\n",
220        335544338 => "no match for first value expression\n",
221        335544339 => "information type inappropriate for object specified\n",
222        335544340 => "no information of this type available for object specified\n",
223        335544341 => "unknown information item\n",
224        335544342 => "action cancelled by trigger (@1) to preserve data integrity\n",
225        335544343 => "invalid request BLR at offset @1\n",
226        335544344 => "I/O error during '@1' operation for file '@2'\n",
227        335544345 => "lock conflict on no wait transaction\n",
228        335544346 => "corrupt system table\n",
229        335544347 => "validation error for column @1, value '@2'\n",
230        335544348 => "no current record for fetch operation\n",
231        335544349 => "attempt to store duplicate value (visible to active transactions) in unique index '@1'\n",
232        335544350 => "program attempted to exit without finishing database\n",
233        335544351 => "unsuccessful metadata update\n",
234        335544352 => "no permission for @1 access to @2 @3\n",
235        335544353 => "transaction is not in limbo\n",
236        335544354 => "invalid database key\n",
237        335544355 => "BLOB was not closed\n",
238        335544356 => "metadata is obsolete\n",
239        335544357 => "cannot disconnect database with open transactions (@1 active)\n",
240        335544358 => "message length error (encountered @1, expected @2)\n",
241        335544359 => "attempted update of read-only column @1\n",
242        335544360 => "attempted update of read-only table\n",
243        335544361 => "attempted update during read-only transaction\n",
244        335544362 => "cannot update read-only view @1\n",
245        335544363 => "no transaction for request\n",
246        335544364 => "request synchronization error\n",
247        335544365 => "request referenced an unavailable database\n",
248        335544366 => "segment buffer length shorter than expected\n",
249        335544367 => "attempted retrieval of more segments than exist\n",
250        335544368 => "attempted invalid operation on a BLOB\n",
251        335544369 => "attempted read of a new, open BLOB\n",
252        335544370 => "attempted action on BLOB outside transaction\n",
253        335544371 => "attempted write to read-only BLOB\n",
254        335544372 => "attempted reference to BLOB in unavailable database\n",
255        335544373 => "operating system directive @1 failed\n",
256        335544374 => "attempt to fetch past the last record in a record stream\n",
257        335544375 => "unavailable database\n",
258        335544376 => "table @1 was omitted from the transaction reserving list\n",
259        335544377 => "request includes a DSRI extension not supported in this implementation\n",
260        335544378 => "feature is not supported\n",
261        335544379 => "unsupported on-disk structure for file @1; found @2.@3, support @4.@5\n",
262        335544380 => "wrong number of arguments on call\n",
263        335544381 => "Implementation limit exceeded\n",
264        335544382 => "@1\n",
265        335544383 => "unrecoverable conflict with limbo transaction @1\n",
266        335544384 => "internal error\n",
267        335544385 => "internal error\n",
268        335544386 => "too many requests\n",
269        335544387 => "internal error\n",
270        335544388 => "block size exceeds implementation restriction\n",
271        335544389 => "buffer exhausted\n",
272        335544390 => "BLR syntax error: expected @1 at offset @2, encountered @3\n",
273        335544391 => "buffer in use\n",
274        335544392 => "internal error\n",
275        335544393 => "request in use\n",
276        335544394 => "incompatible version of on-disk structure\n",
277        335544395 => "table @1 is not defined\n",
278        335544396 => "column @1 is not defined in table @2\n",
279        335544397 => "internal error\n",
280        335544398 => "internal error\n",
281        335544399 => "internal error\n",
282        335544400 => "internal error\n",
283        335544401 => "internal error\n",
284        335544402 => "internal error\n",
285        335544403 => "page @1 is of wrong type (expected @2, found @3)\n",
286        335544404 => "database corrupted\n",
287        335544405 => "checksum error on database page @1\n",
288        335544406 => "index is broken\n",
289        335544407 => "database handle not zero\n",
290        335544408 => "transaction handle not zero\n",
291        335544409 => "transaction--request mismatch (synchronization error)\n",
292        335544410 => "bad handle count\n",
293        335544411 => "wrong version of transaction parameter block\n",
294        335544412 => "unsupported BLR version (expected @1, encountered @2)\n",
295        335544413 => "wrong version of database parameter block\n",
296        335544414 => "BLOB and array data types are not supported for @1 operation\n",
297        335544415 => "database corrupted\n",
298        335544416 => "internal error\n",
299        335544417 => "internal error\n",
300        335544418 => "transaction in limbo\n",
301        335544419 => "transaction not in limbo\n",
302        335544420 => "transaction outstanding\n",
303        335544421 => "connection rejected by remote interface\n",
304        335544422 => "internal error\n",
305        335544423 => "internal error\n",
306        335544424 => "no lock manager available\n",
307        335544425 => "context already in use (BLR error)\n",
308        335544426 => "context not defined (BLR error)\n",
309        335544427 => "data operation not supported\n",
310        335544428 => "undefined message number\n",
311        335544429 => "undefined parameter number\n",
312        335544430 => "unable to allocate memory from operating system\n",
313        335544431 => "blocking signal has been received\n",
314        335544432 => "lock manager error\n",
315        335544433 => "communication error with journal '@1'\n",
316        335544434 => "key size exceeds implementation restriction for index '@1'\n",
317        335544435 => "null segment of UNIQUE KEY\n",
318        335544436 => "SQL error code = @1\n",
319        335544437 => "wrong DYN version\n",
320        335544438 => "function @1 is not defined\n",
321        335544439 => "function @1 could not be matched\n",
322        335544440 => "\n",
323        335544441 => "database detach completed with errors\n",
324        335544442 => "database system cannot read argument @1\n",
325        335544443 => "database system cannot write argument @1\n",
326        335544444 => "operation not supported\n",
327        335544445 => "@1 extension error\n",
328        335544446 => "not updatable\n",
329        335544447 => "no rollback performed\n",
330        335544448 => "\n",
331        335544449 => "\n",
332        335544450 => "@1\n",
333        335544451 => "update conflicts with concurrent update\n",
334        335544452 => "product @1 is not licensed\n",
335        335544453 => "object @1 is in use\n",
336        335544454 => "filter not found to convert type @1 to type @2\n",
337        335544455 => "cannot attach active shadow file\n",
338        335544456 => "invalid slice description language at offset @1\n",
339        335544457 => "subscript out of bounds\n",
340        335544458 => "column not array or invalid dimensions (expected @1, encountered @2)\n",
341        335544459 => "record from transaction @1 is stuck in limbo\n",
342        335544460 => "a file in manual shadow @1 is unavailable\n",
343        335544461 => "secondary server attachments cannot validate databases\n",
344        335544462 => "secondary server attachments cannot start journaling\n",
345        335544463 => "generator @1 is not defined\n",
346        335544464 => "secondary server attachments cannot start logging\n",
347        335544465 => "invalid BLOB type for operation\n",
348        335544466 => "violation of FOREIGN KEY constraint '@1' on table '@2'\n",
349        335544467 => "minor version too high found @1 expected @2\n",
350        335544468 => "transaction @1 is @2\n",
351        335544469 => "transaction marked invalid and cannot be committed\n",
352        335544470 => "cache buffer for page @1 invalid\n",
353        335544471 => "there is no index in table @1 with id @2\n",
354        335544472 => "Your user name and password are not defined. Ask your database administrator to set up a Firebird login.\n",
355        335544473 => "invalid bookmark handle\n",
356        335544474 => "invalid lock level @1\n",
357        335544475 => "lock on table @1 conflicts with existing lock\n",
358        335544476 => "requested record lock conflicts with existing lock\n",
359        335544477 => "maximum indexes per table (@1) exceeded\n",
360        335544478 => "enable journal for database before starting online dump\n",
361        335544479 => "online dump failure. Retry dump\n",
362        335544480 => "an online dump is already in progress\n",
363        335544481 => "no more disk/tape space.  Cannot continue online dump\n",
364        335544482 => "journaling allowed only if database has Write-ahead Log\n",
365        335544483 => "maximum number of online dump files that can be specified is 16\n",
366        335544484 => "error in opening Write-ahead Log file during recovery\n",
367        335544485 => "invalid statement handle\n",
368        335544486 => "Write-ahead log subsystem failure\n",
369        335544487 => "WAL Writer error\n",
370        335544488 => "Log file header of @1 too small\n",
371        335544489 => "Invalid version of log file @1\n",
372        335544490 => "Log file @1 not latest in the chain but open flag still set\n",
373        335544491 => "Log file @1 not closed properly; database recovery may be required\n",
374        335544492 => "Database name in the log file @1 is different\n",
375        335544493 => "Unexpected end of log file @1 at offset @2\n",
376        335544494 => "Incomplete log record at offset @1 in log file @2\n",
377        335544495 => "Log record header too small at offset @1 in log file @2\n",
378        335544496 => "Log block too small at offset @1 in log file @2\n",
379        335544497 => "Illegal attempt to attach to an uninitialized WAL segment for @1\n",
380        335544498 => "Invalid WAL parameter block option @1\n",
381        335544499 => "Cannot roll over to the next log file @1\n",
382        335544500 => "database does not use Write-ahead Log\n",
383        335544501 => "cannot drop log file when journaling is enabled\n",
384        335544502 => "reference to invalid stream number\n",
385        335544503 => "WAL subsystem encountered error\n",
386        335544504 => "WAL subsystem corrupted\n",
387        335544505 => "must specify archive file when enabling long term journal for databases with round-robin log files\n",
388        335544506 => "database @1 shutdown in progress\n",
389        335544507 => "refresh range number @1 already in use\n",
390        335544508 => "refresh range number @1 not found\n",
391        335544509 => "CHARACTER SET @1 is not defined\n",
392        335544510 => "lock time-out on wait transaction\n",
393        335544511 => "procedure @1 is not defined\n",
394        335544512 => "Input parameter mismatch for procedure @1\n",
395        335544513 => "Database @1: WAL subsystem bug for pid @2@3\n",
396        335544514 => "Could not expand the WAL segment for database @1\n",
397        335544515 => "status code @1 unknown\n",
398        335544516 => "exception @1 not defined\n",
399        335544517 => "exception @1\n",
400        335544518 => "restart shared cache manager\n",
401        335544519 => "invalid lock handle\n",
402        335544520 => "long-term journaling already enabled\n",
403        335544521 => "Unable to roll over please see Firebird log.\n",
404        335544522 => "WAL I/O error.  Please see Firebird log.\n",
405        335544523 => "WAL writer - Journal server communication error.  Please see Firebird log.\n",
406        335544524 => "WAL buffers cannot be increased.  Please see Firebird log.\n",
407        335544525 => "WAL setup error.  Please see Firebird log.\n",
408        335544526 => "obsolete\n",
409        335544527 => "Cannot start WAL writer for the database @1\n",
410        335544528 => "database @1 shutdown\n",
411        335544529 => "cannot modify an existing user privilege\n",
412        335544530 => "Cannot delete PRIMARY KEY being used in FOREIGN KEY definition.\n",
413        335544531 => "Column used in a PRIMARY constraint must be NOT NULL.\n",
414        335544532 => "Name of Referential Constraint not defined in constraints table.\n",
415        335544533 => "Non-existent PRIMARY or UNIQUE KEY specified for FOREIGN KEY.\n",
416        335544534 => "Cannot update constraints (RDB$REF_CONSTRAINTS).\n",
417        335544535 => "Cannot update constraints (RDB$CHECK_CONSTRAINTS).\n",
418        335544536 => "Cannot delete CHECK constraint entry (RDB$CHECK_CONSTRAINTS)\n",
419        335544537 => "Cannot delete index segment used by an Integrity Constraint\n",
420        335544538 => "Cannot update index segment used by an Integrity Constraint\n",
421        335544539 => "Cannot delete index used by an Integrity Constraint\n",
422        335544540 => "Cannot modify index used by an Integrity Constraint\n",
423        335544541 => "Cannot delete trigger used by a CHECK Constraint\n",
424        335544542 => "Cannot update trigger used by a CHECK Constraint\n",
425        335544543 => "Cannot delete column being used in an Integrity Constraint.\n",
426        335544544 => "Cannot rename column being used in an Integrity Constraint.\n",
427        335544545 => "Cannot update constraints (RDB$RELATION_CONSTRAINTS).\n",
428        335544546 => "Cannot define constraints on views\n",
429        335544547 => "internal Firebird consistency check (invalid RDB$CONSTRAINT_TYPE)\n",
430        335544548 => "Attempt to define a second PRIMARY KEY for the same table\n",
431        335544549 => "cannot modify or erase a system trigger\n",
432        335544550 => "only the owner of a table may reassign ownership\n",
433        335544551 => "could not find object for GRANT\n",
434        335544552 => "could not find column for GRANT\n",
435        335544553 => "user does not have GRANT privileges for operation\n",
436        335544554 => "object has non-SQL security class defined\n",
437        335544555 => "column has non-SQL security class defined\n",
438        335544556 => "Write-ahead Log without shared cache configuration not allowed\n",
439        335544557 => "database shutdown unsuccessful\n",
440        335544558 => "Operation violates CHECK constraint @1 on view or table @2\n",
441        335544559 => "invalid service handle\n",
442        335544560 => "database @1 shutdown in @2 seconds\n",
443        335544561 => "wrong version of service parameter block\n",
444        335544562 => "unrecognized service parameter block\n",
445        335544563 => "service @1 is not defined\n",
446        335544564 => "long-term journaling not enabled\n",
447        335544565 => "Cannot transliterate character between character sets\n",
448        335544566 => "WAL defined; Cache Manager must be started first\n",
449        335544567 => "Overflow log specification required for round-robin log\n",
450        335544568 => "Implementation of text subtype @1 not located.\n",
451        335544569 => "Dynamic SQL Error\n",
452        335544570 => "Invalid command\n",
453        335544571 => "Data type for constant unknown\n",
454        335544572 => "Invalid cursor reference\n",
455        335544573 => "Data type unknown\n",
456        335544574 => "Invalid cursor declaration\n",
457        335544575 => "Cursor @1 is not updatable\n",
458        335544576 => "Attempt to reopen an open cursor\n",
459        335544577 => "Attempt to reclose a closed cursor\n",
460        335544578 => "Column unknown\n",
461        335544579 => "Internal error\n",
462        335544580 => "Table unknown\n",
463        335544581 => "Procedure unknown\n",
464        335544582 => "Request unknown\n",
465        335544583 => "SQLDA error\n",
466        335544584 => "Count of read-write columns does not equal count of values\n",
467        335544585 => "Invalid statement handle\n",
468        335544586 => "Function unknown\n",
469        335544587 => "Column is not a BLOB\n",
470        335544588 => "COLLATION @1 for CHARACTER SET @2 is not defined\n",
471        335544589 => "COLLATION @1 is not valid for specified CHARACTER SET\n",
472        335544590 => "Option specified more than once\n",
473        335544591 => "Unknown transaction option\n",
474        335544592 => "Invalid array reference\n",
475        335544593 => "Array declared with too many dimensions\n",
476        335544594 => "Illegal array dimension range\n",
477        335544595 => "Trigger unknown\n",
478        335544596 => "Subselect illegal in this context\n",
479        335544597 => "Cannot prepare a CREATE DATABASE/SCHEMA statement\n",
480        335544598 => "must specify column name for view select expression\n",
481        335544599 => "number of columns does not match select list\n",
482        335544600 => "Only simple column names permitted for VIEW WITH CHECK OPTION\n",
483        335544601 => "No WHERE clause for VIEW WITH CHECK OPTION\n",
484        335544602 => "Only one table allowed for VIEW WITH CHECK OPTION\n",
485        335544603 => "DISTINCT, GROUP or HAVING not permitted for VIEW WITH CHECK OPTION\n",
486        335544604 => "FOREIGN KEY column count does not match PRIMARY KEY\n",
487        335544605 => "No subqueries permitted for VIEW WITH CHECK OPTION\n",
488        335544606 => "expression evaluation not supported\n",
489        335544607 => "gen.c: node not supported\n",
490        335544608 => "Unexpected end of command\n",
491        335544609 => "INDEX @1\n",
492        335544610 => "EXCEPTION @1\n",
493        335544611 => "COLUMN @1\n",
494        335544612 => "Token unknown\n",
495        335544613 => "union not supported\n",
496        335544614 => "Unsupported DSQL construct\n",
497        335544615 => "column used with aggregate\n",
498        335544616 => "invalid column reference\n",
499        335544617 => "invalid ORDER BY clause\n",
500        335544618 => "Return mode by value not allowed for this data type\n",
501        335544619 => "External functions cannot have more than 10 parameters\n",
502        335544620 => "alias @1 conflicts with an alias in the same statement\n",
503        335544621 => "alias @1 conflicts with a procedure in the same statement\n",
504        335544622 => "alias @1 conflicts with a table in the same statement\n",
505        335544623 => "Illegal use of keyword VALUE\n",
506        335544624 => "segment count of 0 defined for index @1\n",
507        335544625 => "A node name is not permitted in a secondary, shadow, cache or log file name\n",
508        335544626 => "TABLE @1\n",
509        335544627 => "PROCEDURE @1\n",
510        335544628 => "cannot create index @1\n",
511        335544629 => "Write-ahead Log with shadowing configuration not allowed\n",
512        335544630 => "there are @1 dependencies\n",
513        335544631 => "too many keys defined for index @1\n",
514        335544632 => "Preceding file did not specify length, so @1 must include starting page number\n",
515        335544633 => "Shadow number must be a positive integer\n",
516        335544634 => "Token unknown - line @1, column @2\n",
517        335544635 => "there is no alias or table named @1 at this scope level\n",
518        335544636 => "there is no index @1 for table @2\n",
519        335544637 => "table @1 is not referenced in plan\n",
520        335544638 => "table @1 is referenced more than once in plan; use aliases to distinguish\n",
521        335544639 => "table @1 is referenced in the plan but not the from list\n",
522        335544640 => "Invalid use of CHARACTER SET or COLLATE\n",
523        335544641 => "Specified domain or source column @1 does not exist\n",
524        335544642 => "index @1 cannot be used in the specified plan\n",
525        335544643 => "the table @1 is referenced twice; use aliases to differentiate\n",
526        335544644 => "attempt to fetch before the first record in a record stream\n",
527        335544645 => "the current position is on a crack\n",
528        335544646 => "database or file exists\n",
529        335544647 => "invalid comparison operator for find operation\n",
530        335544648 => "Connection lost to pipe server\n",
531        335544649 => "bad checksum\n",
532        335544650 => "wrong page type\n",
533        335544651 => "Cannot insert because the file is readonly or is on a read only medium.\n",
534        335544652 => "multiple rows in singleton select\n",
535        335544653 => "cannot attach to password database\n",
536        335544654 => "cannot start transaction for password database\n",
537        335544655 => "invalid direction for find operation\n",
538        335544656 => "variable @1 conflicts with parameter in same procedure\n",
539        335544657 => "Array/BLOB/DATE data types not allowed in arithmetic\n",
540        335544658 => "@1 is not a valid base table of the specified view\n",
541        335544659 => "table @1 is referenced twice in view; use an alias to distinguish\n",
542        335544660 => "view @1 has more than one base table; use aliases to distinguish\n",
543        335544661 => "cannot add index, index root page is full.\n",
544        335544662 => "BLOB SUB_TYPE @1 is not defined\n",
545        335544663 => "Too many concurrent executions of the same request\n",
546        335544664 => "duplicate specification of @1 - not supported\n",
547        335544665 => "violation of PRIMARY or UNIQUE KEY constraint '@1' on table '@2'\n",
548        335544666 => "server version too old to support all CREATE DATABASE options\n",
549        335544667 => "drop database completed with errors\n",
550        335544668 => "procedure @1 does not return any values\n",
551        335544669 => "count of column list and variable list do not match\n",
552        335544670 => "attempt to index BLOB column in index @1\n",
553        335544671 => "attempt to index array column in index @1\n",
554        335544672 => "too few key columns found for index @1 (incorrect column name?)\n",
555        335544673 => "cannot delete\n",
556        335544674 => "last column in a table cannot be deleted\n",
557        335544675 => "sort error\n",
558        335544676 => "sort error: not enough memory\n",
559        335544677 => "too many versions\n",
560        335544678 => "invalid key position\n",
561        335544679 => "segments not allowed in expression index @1\n",
562        335544680 => "sort error: corruption in data structure\n",
563        335544681 => "new record size of @1 bytes is too big\n",
564        335544682 => "Inappropriate self-reference of column\n",
565        335544683 => "request depth exceeded. (Recursive definition?)\n",
566        335544684 => "cannot access column @1 in view @2\n",
567        335544685 => "dbkey not available for multi-table views\n",
568        335544686 => "journal file wrong format\n",
569        335544687 => "intermediate journal file full\n",
570        335544688 => "The prepare statement identifies a prepare statement with an open cursor\n",
571        335544689 => "Firebird error\n",
572        335544690 => "Cache redefined\n",
573        335544691 => "Insufficient memory to allocate page buffer cache\n",
574        335544692 => "Log redefined\n",
575        335544693 => "Log size too small\n",
576        335544694 => "Log partition size too small\n",
577        335544695 => "Partitions not supported in series of log file specification\n",
578        335544696 => "Total length of a partitioned log must be specified\n",
579        335544697 => "Precision must be from 1 to 18\n",
580        335544698 => "Scale must be between zero and precision\n",
581        335544699 => "Short integer expected\n",
582        335544700 => "Long integer expected\n",
583        335544701 => "Unsigned short integer expected\n",
584        335544702 => "Invalid ESCAPE sequence\n",
585        335544703 => "service @1 does not have an associated executable\n",
586        335544704 => "Failed to locate host machine.\n",
587        335544705 => "Undefined service @1/@2.\n",
588        335544706 => "The specified name was not found in the hosts file or Domain Name Services.\n",
589        335544707 => "user does not have GRANT privileges on base table/view for operation\n",
590        335544708 => "Ambiguous column reference.\n",
591        335544709 => "Invalid aggregate reference\n",
592        335544710 => "navigational stream @1 references a view with more than one base table\n",
593        335544711 => "Attempt to execute an unprepared dynamic SQL statement.\n",
594        335544712 => "Positive value expected\n",
595        335544713 => "Incorrect values within SQLDA structure\n",
596        335544714 => "invalid blob id\n",
597        335544715 => "Operation not supported for EXTERNAL FILE table @1\n",
598        335544716 => "Service is currently busy: @1\n",
599        335544717 => "stack size insufficent to execute current request\n",
600        335544718 => "Invalid key for find operation\n",
601        335544719 => "Error initializing the network software.\n",
602        335544720 => "Unable to load required library @1.\n",
603        335544721 => "Unable to complete network request to host '@1'.\n",
604        335544722 => "Failed to establish a connection.\n",
605        335544723 => "Error while listening for an incoming connection.\n",
606        335544724 => "Failed to establish a secondary connection for event processing.\n",
607        335544725 => "Error while listening for an incoming event connection request.\n",
608        335544726 => "Error reading data from the connection.\n",
609        335544727 => "Error writing data to the connection.\n",
610        335544728 => "Cannot deactivate index used by an integrity constraint\n",
611        335544729 => "Cannot deactivate index used by a PRIMARY/UNIQUE constraint\n",
612        335544730 => "Client/Server Express not supported in this release\n",
613        335544731 => "\n",
614        335544732 => "Access to databases on file servers is not supported.\n",
615        335544733 => "Error while trying to create file\n",
616        335544734 => "Error while trying to open file\n",
617        335544735 => "Error while trying to close file\n",
618        335544736 => "Error while trying to read from file\n",
619        335544737 => "Error while trying to write to file\n",
620        335544738 => "Error while trying to delete file\n",
621        335544739 => "Error while trying to access file\n",
622        335544740 => "A fatal exception occurred during the execution of a user defined function.\n",
623        335544741 => "connection lost to database\n",
624        335544742 => "User cannot write to RDB$USER_PRIVILEGES\n",
625        335544743 => "token size exceeds limit\n",
626        335544744 => "Maximum user count exceeded.  Contact your database administrator.\n",
627        335544745 => "Your login @1 is same as one of the SQL role name. Ask your database administrator to set up a valid Firebird login.\n",
628        335544746 => "'REFERENCES table' without '(column)' requires PRIMARY KEY on referenced table\n",
629        335544747 => "The username entered is too long.  Maximum length is 31 bytes.\n",
630        335544748 => "The password specified is too long.  Maximum length is 8 bytes.\n",
631        335544749 => "A username is required for this operation.\n",
632        335544750 => "A password is required for this operation\n",
633        335544751 => "The network protocol specified is invalid\n",
634        335544752 => "A duplicate user name was found in the security database\n",
635        335544753 => "The user name specified was not found in the security database\n",
636        335544754 => "An error occurred while attempting to add the user.\n",
637        335544755 => "An error occurred while attempting to modify the user record.\n",
638        335544756 => "An error occurred while attempting to delete the user record.\n",
639        335544757 => "An error occurred while updating the security database.\n",
640        335544758 => "sort record size of @1 bytes is too big\n",
641        335544759 => "can not define a not null column with NULL as default value\n",
642        335544760 => "invalid clause --- '@1'\n",
643        335544761 => "too many open handles to database\n",
644        335544762 => "size of optimizer block exceeded\n",
645        335544763 => "a string constant is delimited by double quotes\n",
646        335544764 => "DATE must be changed to TIMESTAMP\n",
647        335544765 => "attempted update on read-only database\n",
648        335544766 => "SQL dialect @1 is not supported in this database\n",
649        335544767 => "A fatal exception occurred during the execution of a blob filter.\n",
650        335544768 => "Access violation.  The code attempted to access a virtual address without privilege to do so.\n",
651        335544769 => "Datatype misalignment.  The attempted to read or write a value that was not stored on a memory boundary.\n",
652        335544770 => "Array bounds exceeded.  The code attempted to access an array element that is out of bounds.\n",
653        335544771 => "Float denormal operand.  One of the floating-point operands is too small to represent a standard float value.\n",
654        335544772 => "Floating-point divide by zero.  The code attempted to divide a floating-point value by zero.\n",
655        335544773 => "Floating-point inexact result.  The result of a floating-point operation cannot be represented as a decimal fraction.\n",
656        335544774 => "Floating-point invalid operand.  An indeterminant error occurred during a floating-point operation.\n",
657        335544775 => "Floating-point overflow.  The exponent of a floating-point operation is greater than the magnitude allowed.\n",
658        335544776 => "Floating-point stack check.  The stack overflowed or underflowed as the result of a floating-point operation.\n",
659        335544777 => "Floating-point underflow.  The exponent of a floating-point operation is less than the magnitude allowed.\n",
660        335544778 => "Integer divide by zero.  The code attempted to divide an integer value by an integer divisor of zero.\n",
661        335544779 => "Integer overflow.  The result of an integer operation caused the most significant bit of the result to carry.\n",
662        335544780 => "An exception occurred that does not have a description.  Exception number @1.\n",
663        335544781 => "Stack overflow.  The resource requirements of the runtime stack have exceeded the memory available to it.\n",
664        335544782 => "Segmentation Fault. The code attempted to access memory without privileges.\n",
665        335544783 => "Illegal Instruction. The Code attempted to perform an illegal operation.\n",
666        335544784 => "Bus Error. The Code caused a system bus error.\n",
667        335544785 => "Floating Point Error. The Code caused an Arithmetic Exception or a floating point exception.\n",
668        335544786 => "Cannot delete rows from external files.\n",
669        335544787 => "Cannot update rows in external files.\n",
670        335544788 => "Unable to perform operation\n",
671        335544789 => "Specified EXTRACT part does not exist in input datatype\n",
672        335544790 => "Service @1 requires SYSDBA permissions.  Reattach to the Service Manager using the SYSDBA account.\n",
673        335544791 => "The file @1 is currently in use by another process.  Try again later.\n",
674        335544792 => "Cannot attach to services manager\n",
675        335544793 => "Metadata update statement is not allowed by the current database SQL dialect @1\n",
676        335544794 => "operation was cancelled\n",
677        335544795 => "unexpected item in service parameter block, expected @1\n",
678        335544796 => "Client SQL dialect @1 does not support reference to @2 datatype\n",
679        335544797 => "user name and password are required while attaching to the services manager\n",
680        335544798 => "You created an indirect dependency on uncommitted metadata. You must roll back the current transaction.\n",
681        335544799 => "The service name was not specified.\n",
682        335544800 => "Too many Contexts of Relation/Procedure/Views. Maximum allowed is 256\n",
683        335544801 => "data type not supported for arithmetic\n",
684        335544802 => "Database dialect being changed from 3 to 1\n",
685        335544803 => "Database dialect not changed.\n",
686        335544804 => "Unable to create database @1\n",
687        335544805 => "Database dialect @1 is not a valid dialect.\n",
688        335544806 => "Valid database dialects are @1.\n",
689        335544807 => "SQL warning code = @1\n",
690        335544808 => "DATE data type is now called TIMESTAMP\n",
691        335544809 => "Function @1 is in @2, which is not in a permitted directory for external functions.\n",
692        335544810 => "value exceeds the range for valid dates\n",
693        335544811 => "passed client dialect @1 is not a valid dialect.\n",
694        335544812 => "Valid client dialects are @1.\n",
695        335544813 => "Unsupported field type specified in BETWEEN predicate.\n",
696        335544814 => "Services functionality will be supported in a later version  of the product\n",
697        335544815 => "GENERATOR @1\n",
698        335544816 => "Function @1\n",
699        335544817 => "Invalid parameter to FETCH or FIRST. Only integers >= 0 are allowed.\n",
700        335544818 => "Invalid parameter to OFFSET or SKIP. Only integers >= 0 are allowed.\n",
701        335544819 => "File exceeded maximum size of 2GB.  Add another database file or use a 64 bit I/O version of Firebird.\n",
702        335544820 => "Unable to find savepoint with name @1 in transaction context\n",
703        335544821 => "Invalid column position used in the @1 clause\n",
704        335544822 => "Cannot use an aggregate or window function in a WHERE clause, use HAVING (for aggregate only) instead\n",
705        335544823 => "Cannot use an aggregate or window function in a GROUP BY clause\n",
706        335544824 => "Invalid expression in the @1 (not contained in either an aggregate function or the GROUP BY clause)\n",
707        335544825 => "Invalid expression in the @1 (neither an aggregate function nor a part of the GROUP BY clause)\n",
708        335544826 => "Nested aggregate and window functions are not allowed\n",
709        335544827 => "Invalid argument in EXECUTE STATEMENT - cannot convert to string\n",
710        335544828 => "Wrong request type in EXECUTE STATEMENT '@1'\n",
711        335544829 => "Variable type (position @1) in EXECUTE STATEMENT '@2' INTO does not match returned column type\n",
712        335544830 => "Too many recursion levels of EXECUTE STATEMENT\n",
713        335544831 => "Use of @1 at location @2 is not allowed by server configuration\n",
714        335544832 => "Cannot change difference file name while database is in backup mode\n",
715        335544833 => "Physical backup is not allowed while Write-Ahead Log is in use\n",
716        335544834 => "Cursor is not open\n",
717        335544835 => "Target shutdown mode is invalid for database '@1'\n",
718        335544836 => "Concatenation overflow. Resulting string cannot exceed 32765 bytes in length.\n",
719        335544837 => "Invalid offset parameter @1 to SUBSTRING. Only positive integers are allowed.\n",
720        335544838 => "Foreign key reference target does not exist\n",
721        335544839 => "Foreign key references are present for the record\n",
722        335544840 => "cannot update\n",
723        335544841 => "Cursor is already open\n",
724        335544842 => "@1\n",
725        335544843 => "Context variable @1 is not found in namespace @2\n",
726        335544844 => "Invalid namespace name @1 passed to @2\n",
727        335544845 => "Too many context variables\n",
728        335544846 => "Invalid argument passed to @1\n",
729        335544847 => "BLR syntax error. Identifier @1... is too long\n",
730        335544848 => "exception @1\n",
731        335544849 => "Malformed string\n",
732        335544850 => "Output parameter mismatch for procedure @1\n",
733        335544851 => "Unexpected end of command - line @1, column @2\n",
734        335544852 => "partner index segment no @1 has incompatible data type\n",
735        335544853 => "Invalid length parameter @1 to SUBSTRING. Negative integers are not allowed.\n",
736        335544854 => "CHARACTER SET @1 is not installed\n",
737        335544855 => "COLLATION @1 for CHARACTER SET @2 is not installed\n",
738        335544856 => "connection shutdown\n",
739        335544857 => "Maximum BLOB size exceeded\n",
740        335544858 => "Can't have relation with only computed fields or constraints\n",
741        335544859 => "Time precision exceeds allowed range (0-@1)\n",
742        335544860 => "Unsupported conversion to target type BLOB (subtype @1)\n",
743        335544861 => "Unsupported conversion to target type ARRAY\n",
744        335544862 => "Stream does not support record locking\n",
745        335544863 => "Cannot create foreign key constraint @1. Partner index does not exist or is inactive.\n",
746        335544864 => "Transactions count exceeded. Perform backup and restore to make database operable again\n",
747        335544865 => "Column has been unexpectedly deleted\n",
748        335544866 => "@1 cannot depend on @2\n",
749        335544867 => "Blob sub_types bigger than 1 (text) are for internal use only\n",
750        335544868 => "Procedure @1 is not selectable (it does not contain a SUSPEND statement)\n",
751        335544869 => "Datatype @1 is not supported for sorting operation\n",
752        335544870 => "COLLATION @1\n",
753        335544871 => "DOMAIN @1\n",
754        335544872 => "domain @1 is not defined\n",
755        335544873 => "Array data type can use up to @1 dimensions\n",
756        335544874 => "A multi database transaction cannot span more than @1 databases\n",
757        335544875 => "Bad debug info format\n",
758        335544876 => "Error while parsing procedure @1's BLR\n",
759        335544877 => "index key too big\n",
760        335544878 => "concurrent transaction number is @1\n",
761        335544879 => "validation error for variable @1, value '@2'\n",
762        335544880 => "validation error for @1, value '@2'\n",
763        335544881 => "Difference file name should be set explicitly for database on raw device\n",
764        335544882 => "Login name too long (@1 characters, maximum allowed @2)\n",
765        335544883 => "column @1 is not defined in procedure @2\n",
766        335544884 => "Invalid SIMILAR TO pattern\n",
767        335544885 => "Invalid TEB format\n",
768        335544886 => "Found more than one transaction isolation in TPB\n",
769        335544887 => "Table reservation lock type @1 requires table name before in TPB\n",
770        335544888 => "Found more than one @1 specification in TPB\n",
771        335544889 => "Option @1 requires READ COMMITTED isolation in TPB\n",
772        335544890 => "Option @1 is not valid if @2 was used previously in TPB\n",
773        335544891 => "Table name length missing after table reservation @1 in TPB\n",
774        335544892 => "Table name length @1 is too long after table reservation @2 in TPB\n",
775        335544893 => "Table name length @1 without table name after table reservation @2 in TPB\n",
776        335544894 => "Table name length @1 goes beyond the remaining TPB size after table reservation @2\n",
777        335544895 => "Table name length is zero after table reservation @1 in TPB\n",
778        335544896 => "Table or view @1 not defined in system tables after table reservation @2 in TPB\n",
779        335544897 => "Base table or view @1 for view @2 not defined in system tables after table reservation @3 in TPB\n",
780        335544898 => "Option length missing after option @1 in TPB\n",
781        335544899 => "Option length @1 without value after option @2 in TPB\n",
782        335544900 => "Option length @1 goes beyond the remaining TPB size after option @2\n",
783        335544901 => "Option length is zero after table reservation @1 in TPB\n",
784        335544902 => "Option length @1 exceeds the range for option @2 in TPB\n",
785        335544903 => "Option value @1 is invalid for the option @2 in TPB\n",
786        335544904 => "Preserving previous table reservation @1 for table @2, stronger than new @3 in TPB\n",
787        335544905 => "Table reservation @1 for table @2 already specified and is stronger than new @3 in TPB\n",
788        335544906 => "Table reservation reached maximum recursion of @1 when expanding views in TPB\n",
789        335544907 => "Table reservation in TPB cannot be applied to @1 because it's a virtual table\n",
790        335544908 => "Table reservation in TPB cannot be applied to @1 because it's a system table\n",
791        335544909 => "Table reservation @1 or @2 in TPB cannot be applied to @3 because it's a temporary table\n",
792        335544910 => "Cannot set the transaction in read only mode after a table reservation isc_tpb_lock_write in TPB\n",
793        335544911 => "Cannot take a table reservation isc_tpb_lock_write in TPB because the transaction is in read only mode\n",
794        335544912 => "value exceeds the range for a valid time\n",
795        335544913 => "value exceeds the range for valid timestamps\n",
796        335544914 => "string right truncation\n",
797        335544915 => "blob truncation when converting to a string: length limit exceeded\n",
798        335544916 => "numeric value is out of range\n",
799        335544917 => "Firebird shutdown is still in progress after the specified timeout\n",
800        335544918 => "Attachment handle is busy\n",
801        335544919 => "Bad written UDF detected: pointer returned in FREE_IT function was not allocated by ib_util_malloc\n",
802        335544920 => "External Data Source provider '@1' not found\n",
803        335544921 => "Execute statement error at @1 :@2Data source : @3\n",
804        335544922 => "Execute statement preprocess SQL error\n",
805        335544923 => "Statement expected\n",
806        335544924 => "Parameter name expected\n",
807        335544925 => "Unclosed comment found near '@1'\n",
808        335544926 => "Execute statement error at @1 :@2Statement : @3Data source : @4\n",
809        335544927 => "Input parameters mismatch\n",
810        335544928 => "Output parameters mismatch\n",
811        335544929 => "Input parameter '@1' have no value set\n",
812        335544930 => "BLR stream length @1 exceeds implementation limit @2\n",
813        335544931 => "Monitoring table space exhausted\n",
814        335544932 => "module name or entrypoint could not be found\n",
815        335544933 => "nothing to cancel\n",
816        335544934 => "ib_util library has not been loaded to deallocate memory returned by FREE_IT function\n",
817        335544935 => "Cannot have circular dependencies with computed fields\n",
818        335544936 => "Security database error\n",
819        335544937 => "Invalid data type in DATE/TIME/TIMESTAMP addition or subtraction in add_datettime()\n",
820        335544938 => "Only a TIME value can be added to a DATE value\n",
821        335544939 => "Only a DATE value can be added to a TIME value\n",
822        335544940 => "TIMESTAMP values can be subtracted only from another TIMESTAMP value\n",
823        335544941 => "Only one operand can be of type TIMESTAMP\n",
824        335544942 => "Only HOUR, MINUTE, SECOND and MILLISECOND can be extracted from TIME values\n",
825        335544943 => "HOUR, MINUTE, SECOND and MILLISECOND cannot be extracted from DATE values\n",
826        335544944 => "Invalid argument for EXTRACT() not being of DATE/TIME/TIMESTAMP type\n",
827        335544945 => "Arguments for @1 must be integral types or NUMERIC/DECIMAL without scale\n",
828        335544946 => "First argument for @1 must be integral type or floating point type\n",
829        335544947 => "Human readable UUID argument for @1 must be of string type\n",
830        335544948 => "Human readable UUID argument for @2 must be of exact length @1\n",
831        335544949 => "Human readable UUID argument for @3 must have '-' at position @2 instead of '@1'\n",
832        335544950 => "Human readable UUID argument for @3 must have hex digit at position @2 instead of '@1'\n",
833        335544951 => "Only HOUR, MINUTE, SECOND and MILLISECOND can be added to TIME values in @1\n",
834        335544952 => "Invalid data type in addition of part to DATE/TIME/TIMESTAMP in @1\n",
835        335544953 => "Invalid part @1 to be added to a DATE/TIME/TIMESTAMP value in @2\n",
836        335544954 => "Expected DATE/TIME/TIMESTAMP type in evlDateAdd() result\n",
837        335544955 => "Expected DATE/TIME/TIMESTAMP type as first and second argument to @1\n",
838        335544956 => "The result of TIME-<value> in @1 cannot be expressed in YEAR, MONTH, DAY or WEEK\n",
839        335544957 => "The result of TIME-TIMESTAMP or TIMESTAMP-TIME in @1 cannot be expressed in HOUR, MINUTE, SECOND or MILLISECOND\n",
840        335544958 => "The result of DATE-TIME or TIME-DATE in @1 cannot be expressed in HOUR, MINUTE, SECOND and MILLISECOND\n",
841        335544959 => "Invalid part @1 to express the difference between two DATE/TIME/TIMESTAMP values in @2\n",
842        335544960 => "Argument for @1 must be positive\n",
843        335544961 => "Base for @1 must be positive\n",
844        335544962 => "Argument #@1 for @2 must be zero or positive\n",
845        335544963 => "Argument #@1 for @2 must be positive\n",
846        335544964 => "Base for @1 cannot be zero if exponent is negative\n",
847        335544965 => "Base for @1 cannot be negative if exponent is not an integral value\n",
848        335544966 => "The numeric scale must be between -128 and 127 in @1\n",
849        335544967 => "Argument for @1 must be zero or positive\n",
850        335544968 => "Binary UUID argument for @1 must be of string type\n",
851        335544969 => "Binary UUID argument for @2 must use @1 bytes\n",
852        335544970 => "Missing required item @1 in service parameter block\n",
853        335544971 => "@1 server is shutdown\n",
854        335544972 => "Invalid connection string\n",
855        335544973 => "Unrecognized events block\n",
856        335544974 => "Could not start first worker thread - shutdown server\n",
857        335544975 => "Timeout occurred while waiting for a secondary connection for event processing\n",
858        335544976 => "Argument for @1 must be different than zero\n",
859        335544977 => "Argument for @1 must be in the range [-1, 1]\n",
860        335544978 => "Argument for @1 must be greater or equal than one\n",
861        335544979 => "Argument for @1 must be in the range ]-1, 1[\n",
862        335544980 => "Incorrect parameters provided to internal function @1\n",
863        335544981 => "Floating point overflow in built-in function @1\n",
864        335544982 => "Floating point overflow in result from UDF @1\n",
865        335544983 => "Invalid floating point value returned by UDF @1\n",
866        335544984 => "Database is probably already opened by another engine instance in another Windows session\n",
867        335544985 => "No free space found in temporary directories\n",
868        335544986 => "Explicit transaction control is not allowed\n",
869        335544987 => "Use of TRUSTED switches in spb_command_line is prohibited\n",
870        335544988 => "PACKAGE @1\n",
871        335544989 => "Cannot make field @1 of table @2 NOT NULL because there are NULLs present\n",
872        335544990 => "Feature @1 is not supported anymore\n",
873        335544991 => "VIEW @1\n",
874        335544992 => "Can not access lock files directory @1\n",
875        335544993 => "Fetch option @1 is invalid for a non-scrollable cursor\n",
876        335544994 => "Error while parsing function @1's BLR\n",
877        335544995 => "Cannot execute function @1 of the unimplemented package @2\n",
878        335544996 => "Cannot execute procedure @1 of the unimplemented package @2\n",
879        335544997 => "External function @1 not returned by the external engine plugin @2\n",
880        335544998 => "External procedure @1 not returned by the external engine plugin @2\n",
881        335544999 => "External trigger @1 not returned by the external engine plugin @2\n",
882        335545000 => "Incompatible plugin version @1 for external engine @2\n",
883        335545001 => "External engine @1 not found\n",
884        335545002 => "Attachment is in use\n",
885        335545003 => "Transaction is in use\n",
886        335545004 => "Error loading plugin @1\n",
887        335545005 => "Loadable module @1 not found\n",
888        335545006 => "Standard plugin entrypoint does not exist in module @1\n",
889        335545007 => "Module @1 exists but can not be loaded\n",
890        335545008 => "Module @1 does not contain plugin @2 type @3\n",
891        335545009 => "Invalid usage of context namespace DDL_TRIGGER\n",
892        335545010 => "Value is NULL but isNull parameter was not informed\n",
893        335545011 => "Type @1 is incompatible with BLOB\n",
894        335545012 => "Invalid date\n",
895        335545013 => "Invalid time\n",
896        335545014 => "Invalid timestamp\n",
897        335545015 => "Invalid index @1 in function @2\n",
898        335545016 => "@1\n",
899        335545017 => "Asynchronous call is already running for this attachment\n",
900        335545018 => "Function @1 is private to package @2\n",
901        335545019 => "Procedure @1 is private to package @2\n",
902        335545020 => "Request can't access new records in relation @1 and should be recompiled\n",
903        335545021 => "invalid events id (handle)\n",
904        335545022 => "Cannot copy statement @1\n",
905        335545023 => "Invalid usage of boolean expression\n",
906        335545024 => "Arguments for @1 cannot both be zero\n",
907        335545025 => "missing service ID in spb\n",
908        335545026 => "External BLR message mismatch: invalid null descriptor at field @1\n",
909        335545027 => "External BLR message mismatch: length = @1, expected @2\n",
910        335545028 => "Subscript @1 out of bounds [@2, @3]\n",
911        335545029 => "Install incomplete, please read the Compatibility chapter in the release notes for this version\n",
912        335545030 => "@1 operation is not allowed for system table @2\n",
913        335545031 => "Libtommath error code @1 in function @2\n",
914        335545032 => "unsupported BLR version (expected between @1 and @2, encountered @3)\n",
915        335545033 => "expected length @1, actual @2\n",
916        335545034 => "Wrong info requested in isc_svc_query() for anonymous service\n",
917        335545035 => "No isc_info_svc_stdin in user request, but service thread requested stdin data\n",
918        335545036 => "Start request for anonymous service is impossible\n",
919        335545037 => "All services except for getting server log require switches\n",
920        335545038 => "Size of stdin data is more than was requested from client\n",
921        335545039 => "Crypt plugin @1 failed to load\n",
922        335545040 => "Length of crypt plugin name should not exceed @1 bytes\n",
923        335545041 => "Crypt failed - already crypting database\n",
924        335545042 => "Crypt failed - database is already in requested state\n",
925        335545043 => "Missing crypt plugin, but page appears encrypted\n",
926        335545044 => "No providers loaded\n",
927        335545045 => "NULL data with non-zero SPB length\n",
928        335545046 => "Maximum (@1) number of arguments exceeded for function @2\n",
929        335545047 => "External BLR message mismatch: names count = @1, blr count = @2\n",
930        335545048 => "External BLR message mismatch: name @1 not found\n",
931        335545049 => "Invalid resultset interface\n",
932        335545050 => "Message length passed from user application does not match set of columns\n",
933        335545051 => "Resultset is missing output format information\n",
934        335545052 => "Message metadata not ready - item @1 is not finished\n",
935        335545053 => "Missing configuration file: @1\n",
936        335545054 => "@1: illegal line <@2>\n",
937        335545055 => "Invalid include operator in @1 for <@2>\n",
938        335545056 => "Include depth too big\n",
939        335545057 => "File to include not found\n",
940        335545058 => "Only the owner can change the ownership\n",
941        335545059 => "undefined variable number\n",
942        335545060 => "Missing security context for @1\n",
943        335545061 => "Missing segment @1 in multisegment connect block parameter\n",
944        335545062 => "Different logins in connect and attach packets - client library error\n",
945        335545063 => "Exceeded exchange limit during authentication handshake\n",
946        335545064 => "Incompatible wire encryption levels requested on client and server\n",
947        335545065 => "Client attempted to attach unencrypted but wire encryption is required\n",
948        335545066 => "Client attempted to start wire encryption using unknown key @1\n",
949        335545067 => "Client attempted to start wire encryption using unsupported plugin @1\n",
950        335545068 => "Error getting security database name from configuration file\n",
951        335545069 => "Client authentication plugin is missing required data from server\n",
952        335545070 => "Client authentication plugin expected @2 bytes of @3 from server, got @1\n",
953        335545071 => "Attempt to get information about an unprepared dynamic SQL statement.\n",
954        335545072 => "Problematic key value is @1\n",
955        335545073 => "Cannot select virtual table @1 for update WITH LOCK\n",
956        335545074 => "Cannot select system table @1 for update WITH LOCK\n",
957        335545075 => "Cannot select temporary table @1 for update WITH LOCK\n",
958        335545076 => "System @1 @2 cannot be modified\n",
959        335545077 => "Server misconfigured - contact administrator please\n",
960        335545078 => "Deprecated backward compatibility ALTER ROLE ... SET/DROP AUTO ADMIN mapping may be used only for RDB$ADMIN role\n",
961        335545079 => "Mapping @1 already exists\n",
962        335545080 => "Mapping @1 does not exist\n",
963        335545081 => "@1 failed when loading mapping cache\n",
964        335545082 => "Invalid name <*> in authentication block\n",
965        335545083 => "Multiple maps found for @1\n",
966        335545084 => "Undefined mapping result - more than one different results found\n",
967        335545085 => "Incompatible mode of attachment to damaged database\n",
968        335545086 => "Attempt to set in database number of buffers which is out of acceptable range [@1:@2]\n",
969        335545087 => "Attempt to temporarily set number of buffers less than @1\n",
970        335545088 => "Global mapping is not available when database @1 is not present\n",
971        335545089 => "Global mapping is not available when table RDB$MAP is not present in database @1\n",
972        335545090 => "Your attachment has no trusted role\n",
973        335545091 => "Role @1 is invalid or unavailable\n",
974        335545092 => "Cursor @1 is not positioned in a valid record\n",
975        335545093 => "Duplicated user attribute @1\n",
976        335545094 => "There is no privilege for this operation\n",
977        335545095 => "Using GRANT OPTION on @1 not allowed\n",
978        335545096 => "read conflicts with concurrent update\n",
979        335545097 => "@1 failed when working with CREATE DATABASE grants\n",
980        335545098 => "CREATE DATABASE grants check is not possible when database @1 is not present\n",
981        335545099 => "CREATE DATABASE grants check is not possible when table RDB$DB_CREATORS is not present in database @1\n",
982        335545100 => "Interface @3 version too old: expected @1, found @2\n",
983        335545101 => "Input parameter mismatch for function @1\n",
984        335545102 => "Error during savepoint backout - transaction invalidated\n",
985        335545103 => "Domain used in the PRIMARY KEY constraint of table @1 must be NOT NULL\n",
986        335545104 => "CHARACTER SET @1 cannot be used as a attachment character set\n",
987        335545105 => "Some database(s) were shutdown when trying to read mapping data\n",
988        335545106 => "Error occurred during login, please check server firebird.log for details\n",
989        335545107 => "Database already opened with engine instance, incompatible with current\n",
990        335545108 => "Invalid crypt key @1\n",
991        335545109 => "Page requires encryption but crypt plugin is missing\n",
992        335545110 => "Maximum index depth (@1 levels) is reached\n",
993        335545111 => "System privilege @1 does not exist\n",
994        335545112 => "System privilege @1 is missing\n",
995        335545113 => "Invalid or missing checksum of encrypted database\n",
996        335545114 => "You must have SYSDBA rights at this server\n",
997        335545115 => "Cannot open cursor for non-SELECT statement\n",
998        335545116 => "If <window frame bound 1> specifies @1, then <window frame bound 2> shall not specify @2\n",
999        335545117 => "RANGE based window with <expr> {PRECEDING | FOLLOWING} cannot have ORDER BY with more than one value\n",
1000        335545118 => "RANGE based window must have an ORDER BY key of numerical, date, time or timestamp types\n",
1001        335545119 => "Window RANGE/ROWS PRECEDING/FOLLOWING value must be of a numerical type\n",
1002        335545120 => "Invalid PRECEDING or FOLLOWING offset in window function: cannot be negative\n",
1003        335545121 => "Window @1 not found\n",
1004        335545122 => "Cannot use PARTITION BY clause while overriding the window @1\n",
1005        335545123 => "Cannot use ORDER BY clause while overriding the window @1 which already has an ORDER BY clause\n",
1006        335545124 => "Cannot override the window @1 because it has a frame clause. Tip: it can be used without parenthesis in OVER\n",
1007        335545125 => "Duplicate window definition for @1\n",
1008        335545126 => "SQL statement is too long. Maximum size is @1 bytes.\n",
1009        335545127 => "Config level timeout expired.\n",
1010        335545128 => "Attachment level timeout expired.\n",
1011        335545129 => "Statement level timeout expired.\n",
1012        335545130 => "Killed by database administrator.\n",
1013        335545131 => "Idle timeout expired.\n",
1014        335545132 => "Database is shutdown.\n",
1015        335545133 => "Engine is shutdown.\n",
1016        335545134 => "OVERRIDING clause can be used only when an identity column is present in the INSERT's field list for table/view @1\n",
1017        335545135 => "OVERRIDING SYSTEM VALUE can be used only for identity column defined as 'GENERATED ALWAYS' in INSERT for table/view @1\n",
1018        335545136 => "OVERRIDING USER VALUE can be used only for identity column defined as 'GENERATED BY DEFAULT' in INSERT for table/view @1\n",
1019        335545137 => "OVERRIDING SYSTEM VALUE should be used to override the value of an identity column defined as 'GENERATED ALWAYS' in table/view @1\n",
1020        335545138 => "DecFloat precision must be 16 or 34\n",
1021        335545139 => "Decimal float divide by zero.  The code attempted to divide a DECFLOAT value by zero.\n",
1022        335545140 => "Decimal float inexact result.  The result of an operation cannot be represented as a decimal fraction.\n",
1023        335545141 => "Decimal float invalid operation.  An indeterminant error occurred during an operation.\n",
1024        335545142 => "Decimal float overflow.  The exponent of a result is greater than the magnitude allowed.\n",
1025        335545143 => "Decimal float underflow.  The exponent of a result is less than the magnitude allowed.\n",
1026        335545144 => "Sub-function @1 has not been defined\n",
1027        335545145 => "Sub-procedure @1 has not been defined\n",
1028        335545146 => "Sub-function @1 has a signature mismatch with its forward declaration\n",
1029        335545147 => "Sub-procedure @1 has a signature mismatch with its forward declaration\n",
1030        335545148 => "Default values for parameters are not allowed in definition of the previously declared sub-function @1\n",
1031        335545149 => "Default values for parameters are not allowed in definition of the previously declared sub-procedure @1\n",
1032        335545150 => "Sub-function @1 was declared but not implemented\n",
1033        335545151 => "Sub-procedure @1 was declared but not implemented\n",
1034        335545152 => "Invalid HASH algorithm @1\n",
1035        335545153 => "Expression evaluation error for index '@1' on table '@2'\n",
1036        335545154 => "Invalid decfloat trap state @1\n",
1037        335545155 => "Invalid decfloat rounding mode @1\n",
1038        335545156 => "Invalid part @1 to calculate the @1 of a DATE/TIMESTAMP\n",
1039        335545157 => "Expected DATE/TIMESTAMP value in @1\n",
1040        335545158 => "Precision must be from @1 to @2\n",
1041        335545159 => "invalid batch handle\n",
1042        335545160 => "Bad international character in tag @1\n",
1043        335545161 => "Null data in parameters block with non-zero length\n",
1044        335545162 => "Items working with running service and getting generic server information should not be mixed in single info block\n",
1045        335545163 => "Unknown information item, code @1\n",
1046        335545164 => "Wrong version of blob parameters block @1, should be @2\n",
1047        335545165 => "User management plugin is missing or failed to load\n",
1048        335545166 => "Missing entrypoint @1 in ICU library\n",
1049        335545167 => "Could not find acceptable ICU library\n",
1050        335545168 => "Name @1 not found in system MetadataBuilder\n",
1051        335545169 => "Parse to tokens error\n",
1052        335545170 => "Error opening international conversion descriptor from @1 to @2\n",
1053        335545171 => "Message @1 is out of range, only @2 messages in batch\n",
1054        335545172 => "Detailed error info for message @1 is missing in batch\n",
1055        335545173 => "Compression stream init error @1\n",
1056        335545174 => "Decompression stream init error @1\n",
1057        335545175 => "Segment size (@1) should not exceed 65535 (64K - 1) when using segmented blob\n",
1058        335545176 => "Invalid blob policy in the batch for @1() call\n",
1059        335545177 => "Can't change default BPB after adding any data to batch\n",
1060        335545178 => "Unexpected info buffer structure querying for default blob alignment\n",
1061        335545179 => "Duplicated segment @1 in multisegment connect block parameter\n",
1062        335545180 => "Plugin not supported by network protocol\n",
1063        335545181 => "Error parsing message format\n",
1064        335545182 => "Wrong version of batch parameters block @1, should be @2\n",
1065        335545183 => "Message size (@1) in batch exceeds internal buffer size (@2)\n",
1066        335545184 => "Batch already opened for this statement\n",
1067        335545185 => "Invalid type of statement used in batch\n",
1068        335545186 => "Statement used in batch must have parameters\n",
1069        335545187 => "There are no blobs in associated with batch statement\n",
1070        335545188 => "appendBlobData() is used to append data to last blob but no such blob was added to the batch\n",
1071        335545189 => "Portions of data, passed as blob stream, should have size multiple to the alignment required for blobs\n",
1072        335545190 => "Repeated blob id @1 in registerBlob()\n",
1073        335545191 => "Blob buffer format error\n",
1074        335545192 => "Unusable (too small) data remained in @1 buffer\n",
1075        335545193 => "Blob continuation should not contain BPB\n",
1076        335545194 => "Size of BPB (@1) greater than remaining data (@2)\n",
1077        335545195 => "Size of segment (@1) greater than current BLOB data (@2)\n",
1078        335545196 => "Size of segment (@1) greater than available data (@2)\n",
1079        335545197 => "Unknown blob ID @1 in the batch message\n",
1080        335545198 => "Internal buffer overflow - batch too big\n",
1081        335545199 => "Numeric literal too long\n",
1082        335545200 => "Error using events in mapping shared memory: @1\n",
1083        335545201 => "Global mapping memory overflow\n",
1084        335545202 => "Header page overflow - too many clumplets on it\n",
1085        335545203 => "No matching client/server authentication plugins configured for execute statement in embedded datasource\n",
1086        335545204 => "Missing database encryption key for your attachment\n",
1087        335545205 => "Key holder plugin @1 failed to load\n",
1088        335545206 => "Cannot reset user session\n",
1089        335545207 => "There are open transactions (@1 active)\n",
1090        335545208 => "Session was reset with warning(s)\n",
1091        335545209 => "Transaction is rolled back due to session reset, all changes are lost\n",
1092        335545210 => "Plugin @1:\n",
1093        335545211 => "PARAMETER @1\n",
1094        335545212 => "Starting page number for file @1 must be @2 or greater\n",
1095        335545213 => "Invalid time zone offset: @1 - must be between -14:00 and +14:00\n",
1096        335545214 => "Invalid time zone region: @1\n",
1097        335545215 => "Invalid time zone ID: @1\n",
1098        335545216 => "Wrong base64 text length @1, should be multiple of 4\n",
1099        335545217 => "Invalid first parameter datatype - need string or blob\n",
1100        335545218 => "Error registering @1 - probably bad tomcrypt library\n",
1101        335545219 => "Unknown crypt algorithm @1 in USING clause\n",
1102        335545220 => "Should specify mode parameter for symmetric cipher\n",
1103        335545221 => "Unknown symmetric crypt mode specified\n",
1104        335545222 => "Mode parameter makes no sense for chosen cipher\n",
1105        335545223 => "Should specify initialization vector (IV) for chosen cipher and/or mode\n",
1106        335545224 => "Initialization vector (IV) makes no sense for chosen cipher and/or mode\n",
1107        335545225 => "Invalid counter endianess @1\n",
1108        335545226 => "Counter endianess parameter is not used in mode @1\n",
1109        335545227 => "Too big counter value @1, maximum @2 can be used\n",
1110        335545228 => "Counter length/value parameter is not used with @1 @2\n",
1111        335545229 => "Invalid initialization vector (IV) length @1, need @2\n",
1112        335545230 => "TomCrypt library error: @1\n",
1113        335545231 => "Starting PRNG yarrow\n",
1114        335545232 => "Setting up PRNG yarrow\n",
1115        335545233 => "Initializing @1 mode\n",
1116        335545234 => "Encrypting in @1 mode\n",
1117        335545235 => "Decrypting in @1 mode\n",
1118        335545236 => "Initializing cipher @1\n",
1119        335545237 => "Encrypting using cipher @1\n",
1120        335545238 => "Decrypting using cipher @1\n",
1121        335545239 => "Setting initialization vector (IV) for @1\n",
1122        335545240 => "Invalid initialization vector (IV) length @1, need  8 or 12\n",
1123        335545241 => "Encoding @1\n",
1124        335545242 => "Decoding @1\n",
1125        335545243 => "Importing RSA key\n",
1126        335545244 => "Invalid OAEP packet\n",
1127        335545245 => "Unknown hash algorithm @1\n",
1128        335545246 => "Making RSA key\n",
1129        335545247 => "Exporting @1 RSA key\n",
1130        335545248 => "RSA-signing data\n",
1131        335545249 => "Verifying RSA-signed data\n",
1132        335545250 => "Invalid key length @1, need 16 or 32\n",
1133        335545251 => "invalid replicator handle\n",
1134        335545252 => "Transaction's base snapshot number does not exist\n",
1135        335545253 => "Input parameter '@1' is not used in SQL query text\n",
1136        335545254 => "Effective user is @1\n",
1137        335545255 => "Invalid time zone bind mode @1\n",
1138        335545256 => "Invalid decfloat bind mode @1\n",
1139        335545257 => "Invalid hex text length @1, should be multiple of 2\n",
1140        335545258 => "Invalid hex digit @1 at position @2\n",
1141        335545259 => "Error processing isc_dpb_set_bind clumplet '@1'\n",
1142        335545260 => "The following statement failed: @1\n",
1143        335545261 => "Can not convert @1 to @2\n",
1144        335545262 => "cannot update old BLOB\n",
1145        335545263 => "cannot read from new BLOB\n",
1146        335545264 => "No permission for CREATE @1 operation\n",
1147        335545265 => "SUSPEND could not be used without RETURNS clause in PROCEDURE or EXECUTE BLOCK\n",
1148        335545266 => "String truncated warning due to the following reason\n",
1149        335545267 => "Monitoring data does not fit into the field\n",
1150        335545268 => "Engine data does not fit into return value of system function\n",
1151        335740929 => "data base file name (@1) already given\n",
1152        335740930 => "invalid switch @1\n",
1153        335740932 => "incompatible switch combination\n",
1154        335740933 => "replay log pathname required\n",
1155        335740934 => "number of page buffers for cache required\n",
1156        335740935 => "numeric value required\n",
1157        335740936 => "positive numeric value required\n",
1158        335740937 => "number of transactions per sweep required\n",
1159        335740940 => "'full' or 'reserve' required\n",
1160        335740941 => "user name required\n",
1161        335740942 => "password required\n",
1162        335740943 => "subsystem name\n",
1163        335740944 => "'wal' required\n",
1164        335740945 => "number of seconds required\n",
1165        335740946 => "numeric value between 0 and 32767 inclusive required\n",
1166        335740947 => "must specify type of shutdown\n",
1167        335740948 => "please retry, specifying an option\n",
1168        335740951 => "please retry, giving a database name\n",
1169        335740991 => "internal block exceeds maximum size\n",
1170        335740992 => "corrupt pool\n",
1171        335740993 => "virtual memory exhausted\n",
1172        335740994 => "bad pool id\n",
1173        335740995 => "Transaction state @1 not in valid range.\n",
1174        335741012 => "unexpected end of input\n",
1175        335741018 => "failed to reconnect to a transaction in database @1\n",
1176        335741036 => "Transaction description item unknown\n",
1177        335741038 => "'read_only' or 'read_write' required\n",
1178        335741042 => "positive or zero numeric value required\n",
1179        336003074 => "Cannot SELECT RDB$DB_KEY from a stored procedure.\n",
1180        336003075 => "Precision 10 to 18 changed from DOUBLE PRECISION in SQL dialect 1 to 64-bit scaled integer in SQL dialect 3\n",
1181        336003076 => "Use of @1 expression that returns different results in dialect 1 and dialect 3\n",
1182        336003077 => "Database SQL dialect @1 does not support reference to @2 datatype\n",
1183        336003079 => "DB dialect @1 and client dialect @2 conflict with respect to numeric precision @3.\n",
1184        336003080 => "WARNING: Numeric literal @1 is interpreted as a floating-point\n",
1185        336003081 => "value in SQL dialect 1, but as an exact numeric value in SQL dialect 3.\n",
1186        336003082 => "WARNING: NUMERIC and DECIMAL fields with precision 10 or greater are stored\n",
1187        336003083 => "as approximate floating-point values in SQL dialect 1, but as 64-bit\n",
1188        336003084 => "integers in SQL dialect 3.\n",
1189        336003085 => "Ambiguous field name between @1 and @2\n",
1190        336003086 => "External function should have return position between 1 and @1\n",
1191        336003087 => "Label @1 @2 in the current scope\n",
1192        336003088 => "Datatypes @1are not comparable in expression @2\n",
1193        336003089 => "Empty cursor name is not allowed\n",
1194        336003090 => "Statement already has a cursor @1 assigned\n",
1195        336003091 => "Cursor @1 is not found in the current context\n",
1196        336003092 => "Cursor @1 already exists in the current context\n",
1197        336003093 => "Relation @1 is ambiguous in cursor @2\n",
1198        336003094 => "Relation @1 is not found in cursor @2\n",
1199        336003095 => "Cursor is not open\n",
1200        336003096 => "Data type @1 is not supported for EXTERNAL TABLES. Relation '@2', field '@3'\n",
1201        336003097 => "Feature not supported on ODS version older than @1.@2\n",
1202        336003098 => "Primary key required on table @1\n",
1203        336003099 => "UPDATE OR INSERT field list does not match primary key of table @1\n",
1204        336003100 => "UPDATE OR INSERT field list does not match MATCHING clause\n",
1205        336003101 => "UPDATE OR INSERT without MATCHING could not be used with views based on more than one table\n",
1206        336003102 => "Incompatible trigger type\n",
1207        336003103 => "Database trigger type can't be changed\n",
1208        336003104 => "To be used with RDB$RECORD_VERSION, @1 must be a table or a view of single table\n",
1209        336003105 => "SQLDA version expected between @1 and @2, found @3\n",
1210        336003106 => "at SQLVAR index @1\n",
1211        336003107 => "empty pointer to NULL indicator variable\n",
1212        336003108 => "empty pointer to data\n",
1213        336003109 => "No SQLDA for input values provided\n",
1214        336003110 => "No SQLDA for output values provided\n",
1215        336003111 => "Wrong number of parameters (expected @1, got @2)\n",
1216        336003112 => "Invalid DROP SQL SECURITY clause\n",
1217        336003113 => "UPDATE OR INSERT value for field @1, part of the implicit or explicit MATCHING clause, cannot be DEFAULT\n",
1218        336068645 => "BLOB Filter @1 not found\n",
1219        336068649 => "Function @1 not found\n",
1220        336068656 => "Index not found\n",
1221        336068662 => "View @1 not found\n",
1222        336068697 => "Domain not found\n",
1223        336068717 => "Triggers created automatically cannot be modified\n",
1224        336068740 => "Table @1 already exists\n",
1225        336068748 => "Procedure @1 not found\n",
1226        336068752 => "Exception not found\n",
1227        336068754 => "Parameter @1 in procedure @2 not found\n",
1228        336068755 => "Trigger @1 not found\n",
1229        336068759 => "Character set @1 not found\n",
1230        336068760 => "Collation @1 not found\n",
1231        336068763 => "Role @1 not found\n",
1232        336068767 => "Name longer than database column size\n",
1233        336068784 => "column @1 does not exist in table/view @2\n",
1234        336068796 => "SQL role @1 does not exist\n",
1235        336068797 => "user @1 has no grant admin option on SQL role @2\n",
1236        336068798 => "user @1 is not a member of SQL role @2\n",
1237        336068799 => "@1 is not the owner of SQL role @2\n",
1238        336068800 => "@1 is a SQL role and not a user\n",
1239        336068801 => "user name @1 could not be used for SQL role\n",
1240        336068802 => "SQL role @1 already exists\n",
1241        336068803 => "keyword @1 can not be used as a SQL role name\n",
1242        336068804 => "SQL roles are not supported in on older versions of the database.  A backup and restore of the database is required.\n",
1243        336068812 => "Cannot rename domain @1 to @2.  A domain with that name already exists.\n",
1244        336068813 => "Cannot rename column @1 to @2.  A column with that name already exists in table @3.\n",
1245        336068814 => "Column @1 from table @2 is referenced in @3\n",
1246        336068815 => "Cannot change datatype for column @1.  Changing datatype is not supported for BLOB or ARRAY columns.\n",
1247        336068816 => "New size specified for column @1 must be at least @2 characters.\n",
1248        336068817 => "Cannot change datatype for @1.  Conversion from base type @2 to @3 is not supported.\n",
1249        336068818 => "Cannot change datatype for column @1 from a character type to a non-character type.\n",
1250        336068820 => "Zero length identifiers are not allowed\n",
1251        336068822 => "Sequence @1 not found\n",
1252        336068829 => "Maximum number of collations per character set exceeded\n",
1253        336068830 => "Invalid collation attributes\n",
1254        336068840 => "@1 cannot reference @2\n",
1255        336068843 => "Collation @1 is used in table @2 (field name @3) and cannot be dropped\n",
1256        336068844 => "Collation @1 is used in domain @2 and cannot be dropped\n",
1257        336068845 => "Cannot delete system collation\n",
1258        336068846 => "Cannot delete default collation of CHARACTER SET @1\n",
1259        336068849 => "Table @1 not found\n",
1260        336068851 => "Collation @1 is used in procedure @2 (parameter name @3) and cannot be dropped\n",
1261        336068852 => "New scale specified for column @1 must be at most @2.\n",
1262        336068853 => "New precision specified for column @1 must be at least @2.\n",
1263        336068855 => "Warning: @1 on @2 is not granted to @3.\n",
1264        336068856 => "Feature '@1' is not supported in ODS @2.@3\n",
1265        336068857 => "Cannot add or remove COMPUTED from column @1\n",
1266        336068858 => "Password should not be empty string\n",
1267        336068859 => "Index @1 already exists\n",
1268        336068864 => "Package @1 not found\n",
1269        336068865 => "Schema @1 not found\n",
1270        336068866 => "Cannot ALTER or DROP system procedure @1\n",
1271        336068867 => "Cannot ALTER or DROP system trigger @1\n",
1272        336068868 => "Cannot ALTER or DROP system function @1\n",
1273        336068869 => "Invalid DDL statement for procedure @1\n",
1274        336068870 => "Invalid DDL statement for trigger @1\n",
1275        336068871 => "Function @1 has not been defined on the package body @2\n",
1276        336068872 => "Procedure @1 has not been defined on the package body @2\n",
1277        336068873 => "Function @1 has a signature mismatch on package body @2\n",
1278        336068874 => "Procedure @1 has a signature mismatch on package body @2\n",
1279        336068875 => "Default values for parameters are not allowed in the definition of a previously declared packaged procedure @1.@2\n",
1280        336068877 => "Package body @1 already exists\n",
1281        336068878 => "Invalid DDL statement for function @1\n",
1282        336068879 => "Cannot alter new style function @1 with ALTER EXTERNAL FUNCTION. Use ALTER FUNCTION instead.\n",
1283        336068886 => "Parameter @1 in function @2 not found\n",
1284        336068887 => "Parameter @1 of routine @2 not found\n",
1285        336068888 => "Parameter @1 of routine @2 is ambiguous (found in both procedures and functions). Use a specifier keyword.\n",
1286        336068889 => "Collation @1 is used in function @2 (parameter name @3) and cannot be dropped\n",
1287        336068890 => "Domain @1 is used in function @2 (parameter name @3) and cannot be dropped\n",
1288        336068891 => "ALTER USER requires at least one clause to be specified\n",
1289        336068894 => "Duplicate @1 @2\n",
1290        336068895 => "System @1 @2 cannot be modified\n",
1291        336068896 => "INCREMENT BY 0 is an illegal option for sequence @1\n",
1292        336068897 => "Can't use @1 in FOREIGN KEY constraint\n",
1293        336068898 => "Default values for parameters are not allowed in the definition of a previously declared packaged function @1.@2\n",
1294        336068900 => "role @1 can not be granted to role @2\n",
1295        336068904 => "INCREMENT BY 0 is an illegal option for identity column @1 of table @2\n",
1296        336068907 => "no @1 privilege with grant option on DDL @2\n",
1297        336068908 => "no @1 privilege with grant option on object @2\n",
1298        336068909 => "Function @1 does not exist\n",
1299        336068910 => "Procedure @1 does not exist\n",
1300        336068911 => "Package @1 does not exist\n",
1301        336068912 => "Trigger @1 does not exist\n",
1302        336068913 => "View @1 does not exist\n",
1303        336068914 => "Table @1 does not exist\n",
1304        336068915 => "Exception @1 does not exist\n",
1305        336068916 => "Generator/Sequence @1 does not exist\n",
1306        336068917 => "Field @1 of table @2 does not exist\n",
1307        336330753 => "found unknown switch\n",
1308        336330754 => "page size parameter missing\n",
1309        336330755 => "Page size specified (@1) greater than limit (32768 bytes)\n",
1310        336330756 => "redirect location for output is not specified\n",
1311        336330757 => "conflicting switches for backup/restore\n",
1312        336330758 => "device type @1 not known\n",
1313        336330759 => "protection is not there yet\n",
1314        336330760 => "page size is allowed only on restore or create\n",
1315        336330761 => "multiple sources or destinations specified\n",
1316        336330762 => "requires both input and output filenames\n",
1317        336330763 => "input and output have the same name.  Disallowed.\n",
1318        336330764 => "expected page size, encountered '@1'\n",
1319        336330765 => "REPLACE specified, but the first file @1 is a database\n",
1320        336330766 => "database @1 already exists.  To replace it, use the -REP switch\n",
1321        336330767 => "device type not specified\n",
1322        336330772 => "gds_$blob_info failed\n",
1323        336330773 => "do not understand BLOB INFO item @1\n",
1324        336330774 => "gds_$get_segment failed\n",
1325        336330775 => "gds_$close_blob failed\n",
1326        336330776 => "gds_$open_blob failed\n",
1327        336330777 => "Failed in put_blr_gen_id\n",
1328        336330778 => "data type @1 not understood\n",
1329        336330779 => "gds_$compile_request failed\n",
1330        336330780 => "gds_$start_request failed\n",
1331        336330781 => "gds_$receive failed\n",
1332        336330782 => "gds_$release_request failed\n",
1333        336330783 => "gds_$database_info failed\n",
1334        336330784 => "Expected database description record\n",
1335        336330785 => "failed to create database @1\n",
1336        336330786 => "RESTORE: decompression length error\n",
1337        336330787 => "cannot find table @1\n",
1338        336330788 => "Cannot find column for BLOB\n",
1339        336330789 => "gds_$create_blob failed\n",
1340        336330790 => "gds_$put_segment failed\n",
1341        336330791 => "expected record length\n",
1342        336330792 => "wrong length record, expected @1 encountered @2\n",
1343        336330793 => "expected data attribute\n",
1344        336330794 => "Failed in store_blr_gen_id\n",
1345        336330795 => "do not recognize record type @1\n",
1346        336330796 => "Expected backup version 1..10.  Found @1\n",
1347        336330797 => "expected backup description record\n",
1348        336330798 => "string truncated\n",
1349        336330799 => "warning -- record could not be restored\n",
1350        336330800 => "gds_$send failed\n",
1351        336330801 => "no table name for data\n",
1352        336330802 => "unexpected end of file on backup file\n",
1353        336330803 => "database format @1 is too old to restore to\n",
1354        336330804 => "array dimension for column @1 is invalid\n",
1355        336330807 => "Expected XDR record length\n",
1356        336330817 => "cannot open backup file @1\n",
1357        336330818 => "cannot open status and error output file @1\n",
1358        336330934 => "blocking factor parameter missing\n",
1359        336330935 => "expected blocking factor, encountered '@1'\n",
1360        336330936 => "a blocking factor may not be used in conjunction with device CT\n",
1361        336330940 => "user name parameter missing\n",
1362        336330941 => "password parameter missing\n",
1363        336330952 => " missing parameter for the number of bytes to be skipped\n",
1364        336330953 => "expected number of bytes to be skipped, encountered '@1'\n",
1365        336330965 => "character set\n",
1366        336330967 => "collation\n",
1367        336330972 => "Unexpected I/O error while reading from backup file\n",
1368        336330973 => "Unexpected I/O error while writing to backup file\n",
1369        336330985 => "could not drop database @1 (no privilege or database might be in use)\n",
1370        336330990 => "System memory exhausted\n",
1371        336331002 => "SQL role\n",
1372        336331005 => "SQL role parameter missing\n",
1373        336331010 => "page buffers parameter missing\n",
1374        336331011 => "expected page buffers, encountered '@1'\n",
1375        336331012 => "page buffers is allowed only on restore or create\n",
1376        336331014 => "size specification either missing or incorrect for file @1\n",
1377        336331015 => "file @1 out of sequence\n",
1378        336331016 => "can't join -- one of the files missing\n",
1379        336331017 => " standard input is not supported when using join operation\n",
1380        336331018 => "standard output is not supported when using split operation or in verbose mode\n",
1381        336331019 => "backup file @1 might be corrupt\n",
1382        336331020 => "database file specification missing\n",
1383        336331021 => "can't write a header record to file @1\n",
1384        336331022 => "free disk space exhausted\n",
1385        336331023 => "file size given (@1) is less than minimum allowed (@2)\n",
1386        336331025 => "service name parameter missing\n",
1387        336331026 => "Cannot restore over current database, must be SYSDBA or owner of the existing database.\n",
1388        336331031 => "'read_only' or 'read_write' required\n",
1389        336331033 => "just data ignore all constraints etc.\n",
1390        336331034 => "restoring data only ignoring foreign key, unique, not null & other constraints\n",
1391        336331078 => "verbose interval value parameter missing\n",
1392        336331079 => "verbose interval value cannot be smaller than @1\n",
1393        336331081 => "verify (verbose) and verbint options are mutually exclusive\n",
1394        336331082 => "option -@1 is allowed only on restore or create\n",
1395        336331083 => "option -@1 is allowed only on backup\n",
1396        336331084 => "options -@1 and -@2 are mutually exclusive\n",
1397        336331085 => "parameter for option -@1 was already specified with value '@2'\n",
1398        336331086 => "option -@1 was already specified\n",
1399        336331091 => "dependency depth greater than @1 for view @2\n",
1400        336331092 => "value greater than @1 when calculating length of rdb$db_key for view @2\n",
1401        336331093 => "Invalid metadata detected. Use -FIX_FSS_METADATA option.\n",
1402        336331094 => "Invalid data detected. Use -FIX_FSS_DATA option.\n",
1403        336331096 => "Expected backup version @2..@3.  Found @1\n",
1404        336331100 => "database format @1 is too old to backup\n",
1405        336397205 => "ODS versions before ODS@1 are not supported\n",
1406        336397206 => "Table @1 does not exist\n",
1407        336397207 => "View @1 does not exist\n",
1408        336397208 => "At line @1, column @2\n",
1409        336397209 => "At unknown line and column\n",
1410        336397210 => "Column @1 cannot be repeated in @2 statement\n",
1411        336397211 => "Too many values (more than @1) in member list to match against\n",
1412        336397212 => "Array and BLOB data types not allowed in computed field\n",
1413        336397213 => "Implicit domain name @1 not allowed in user created domain\n",
1414        336397214 => "scalar operator used on field @1 which is not an array\n",
1415        336397215 => "cannot sort on more than 255 items\n",
1416        336397216 => "cannot group on more than 255 items\n",
1417        336397217 => "Cannot include the same field (@1.@2) twice in the ORDER BY clause with conflicting sorting options\n",
1418        336397218 => "column list from derived table @1 has more columns than the number of items in its SELECT statement\n",
1419        336397219 => "column list from derived table @1 has less columns than the number of items in its SELECT statement\n",
1420        336397220 => "no column name specified for column number @1 in derived table @2\n",
1421        336397221 => "column @1 was specified multiple times for derived table @2\n",
1422        336397222 => "Internal dsql error: alias type expected by pass1_expand_select_node\n",
1423        336397223 => "Internal dsql error: alias type expected by pass1_field\n",
1424        336397224 => "Internal dsql error: column position out of range in pass1_union_auto_cast\n",
1425        336397225 => "Recursive CTE member (@1) can refer itself only in FROM clause\n",
1426        336397226 => "CTE '@1' has cyclic dependencies\n",
1427        336397227 => "Recursive member of CTE can't be member of an outer join\n",
1428        336397228 => "Recursive member of CTE can't reference itself more than once\n",
1429        336397229 => "Recursive CTE (@1) must be an UNION\n",
1430        336397230 => "CTE '@1' defined non-recursive member after recursive\n",
1431        336397231 => "Recursive member of CTE '@1' has @2 clause\n",
1432        336397232 => "Recursive members of CTE (@1) must be linked with another members via UNION ALL\n",
1433        336397233 => "Non-recursive member is missing in CTE '@1'\n",
1434        336397234 => "WITH clause can't be nested\n",
1435        336397235 => "column @1 appears more than once in USING clause\n",
1436        336397236 => "feature is not supported in dialect @1\n",
1437        336397237 => "CTE '@1' is not used in query\n",
1438        336397238 => "column @1 appears more than once in ALTER VIEW\n",
1439        336397239 => "@1 is not supported inside IN AUTONOMOUS TRANSACTION block\n",
1440        336397240 => "Unknown node type @1 in dsql/GEN_expr\n",
1441        336397241 => "Argument for @1 in dialect 1 must be string or numeric\n",
1442        336397242 => "Argument for @1 in dialect 3 must be numeric\n",
1443        336397243 => "Strings cannot be added to or subtracted from DATE or TIME types\n",
1444        336397244 => "Invalid data type for subtraction involving DATE, TIME or TIMESTAMP types\n",
1445        336397245 => "Adding two DATE values or two TIME values is not allowed\n",
1446        336397246 => "DATE value cannot be subtracted from the provided data type\n",
1447        336397247 => "Strings cannot be added or subtracted in dialect 3\n",
1448        336397248 => "Invalid data type for addition or subtraction in dialect 3\n",
1449        336397249 => "Invalid data type for multiplication in dialect 1\n",
1450        336397250 => "Strings cannot be multiplied in dialect 3\n",
1451        336397251 => "Invalid data type for multiplication in dialect 3\n",
1452        336397252 => "Division in dialect 1 must be between numeric data types\n",
1453        336397253 => "Strings cannot be divided in dialect 3\n",
1454        336397254 => "Invalid data type for division in dialect 3\n",
1455        336397255 => "Strings cannot be negated (applied the minus operator) in dialect 3\n",
1456        336397256 => "Invalid data type for negation (minus operator)\n",
1457        336397257 => "Cannot have more than 255 items in DISTINCT / UNION DISTINCT list\n",
1458        336397258 => "ALTER CHARACTER SET @1 failed\n",
1459        336397259 => "COMMENT ON @1 failed\n",
1460        336397260 => "CREATE FUNCTION @1 failed\n",
1461        336397261 => "ALTER FUNCTION @1 failed\n",
1462        336397262 => "CREATE OR ALTER FUNCTION @1 failed\n",
1463        336397263 => "DROP FUNCTION @1 failed\n",
1464        336397264 => "RECREATE FUNCTION @1 failed\n",
1465        336397265 => "CREATE PROCEDURE @1 failed\n",
1466        336397266 => "ALTER PROCEDURE @1 failed\n",
1467        336397267 => "CREATE OR ALTER PROCEDURE @1 failed\n",
1468        336397268 => "DROP PROCEDURE @1 failed\n",
1469        336397269 => "RECREATE PROCEDURE @1 failed\n",
1470        336397270 => "CREATE TRIGGER @1 failed\n",
1471        336397271 => "ALTER TRIGGER @1 failed\n",
1472        336397272 => "CREATE OR ALTER TRIGGER @1 failed\n",
1473        336397273 => "DROP TRIGGER @1 failed\n",
1474        336397274 => "RECREATE TRIGGER @1 failed\n",
1475        336397275 => "CREATE COLLATION @1 failed\n",
1476        336397276 => "DROP COLLATION @1 failed\n",
1477        336397277 => "CREATE DOMAIN @1 failed\n",
1478        336397278 => "ALTER DOMAIN @1 failed\n",
1479        336397279 => "DROP DOMAIN @1 failed\n",
1480        336397280 => "CREATE EXCEPTION @1 failed\n",
1481        336397281 => "ALTER EXCEPTION @1 failed\n",
1482        336397282 => "CREATE OR ALTER EXCEPTION @1 failed\n",
1483        336397283 => "RECREATE EXCEPTION @1 failed\n",
1484        336397284 => "DROP EXCEPTION @1 failed\n",
1485        336397285 => "CREATE SEQUENCE @1 failed\n",
1486        336397286 => "CREATE TABLE @1 failed\n",
1487        336397287 => "ALTER TABLE @1 failed\n",
1488        336397288 => "DROP TABLE @1 failed\n",
1489        336397289 => "RECREATE TABLE @1 failed\n",
1490        336397290 => "CREATE PACKAGE @1 failed\n",
1491        336397291 => "ALTER PACKAGE @1 failed\n",
1492        336397292 => "CREATE OR ALTER PACKAGE @1 failed\n",
1493        336397293 => "DROP PACKAGE @1 failed\n",
1494        336397294 => "RECREATE PACKAGE @1 failed\n",
1495        336397295 => "CREATE PACKAGE BODY @1 failed\n",
1496        336397296 => "DROP PACKAGE BODY @1 failed\n",
1497        336397297 => "RECREATE PACKAGE BODY @1 failed\n",
1498        336397298 => "CREATE VIEW @1 failed\n",
1499        336397299 => "ALTER VIEW @1 failed\n",
1500        336397300 => "CREATE OR ALTER VIEW @1 failed\n",
1501        336397301 => "RECREATE VIEW @1 failed\n",
1502        336397302 => "DROP VIEW @1 failed\n",
1503        336397303 => "DROP SEQUENCE @1 failed\n",
1504        336397304 => "RECREATE SEQUENCE @1 failed\n",
1505        336397305 => "DROP INDEX @1 failed\n",
1506        336397306 => "DROP FILTER @1 failed\n",
1507        336397307 => "DROP SHADOW @1 failed\n",
1508        336397308 => "DROP ROLE @1 failed\n",
1509        336397309 => "DROP USER @1 failed\n",
1510        336397310 => "CREATE ROLE @1 failed\n",
1511        336397311 => "ALTER ROLE @1 failed\n",
1512        336397312 => "ALTER INDEX @1 failed\n",
1513        336397313 => "ALTER DATABASE failed\n",
1514        336397314 => "CREATE SHADOW @1 failed\n",
1515        336397315 => "DECLARE FILTER @1 failed\n",
1516        336397316 => "CREATE INDEX @1 failed\n",
1517        336397317 => "CREATE USER @1 failed\n",
1518        336397318 => "ALTER USER @1 failed\n",
1519        336397319 => "GRANT failed\n",
1520        336397320 => "REVOKE failed\n",
1521        336397321 => "Recursive member of CTE cannot use aggregate or window function\n",
1522        336397322 => "@2 MAPPING @1 failed\n",
1523        336397323 => "ALTER SEQUENCE @1 failed\n",
1524        336397324 => "CREATE GENERATOR @1 failed\n",
1525        336397325 => "SET GENERATOR @1 failed\n",
1526        336397326 => "WITH LOCK can be used only with a single physical table\n",
1527        336397327 => "FIRST/SKIP cannot be used with OFFSET/FETCH or ROWS\n",
1528        336397328 => "WITH LOCK cannot be used with aggregates\n",
1529        336397329 => "WITH LOCK cannot be used with @1\n",
1530        336397330 => "Number of arguments (@1) exceeds the maximum (@2) number of EXCEPTION USING arguments\n",
1531        336397331 => "String literal with @1 bytes exceeds the maximum length of @2 bytes\n",
1532        336397332 => "String literal with @1 characters exceeds the maximum length of @2 characters for the @3 character set\n",
1533        336397333 => "Too many BEGIN...END nesting. Maximum level is @1\n",
1534        336397334 => "RECREATE USER @1 failed\n",
1535        336723983 => "unable to open database\n",
1536        336723984 => "error in switch specifications\n",
1537        336723985 => "no operation specified\n",
1538        336723986 => "no user name specified\n",
1539        336723987 => "add record error\n",
1540        336723988 => "modify record error\n",
1541        336723989 => "find/modify record error\n",
1542        336723990 => "record not found for user: @1\n",
1543        336723991 => "delete record error\n",
1544        336723992 => "find/delete record error\n",
1545        336723996 => "find/display record error\n",
1546        336723997 => "invalid parameter, no switch defined\n",
1547        336723998 => "operation already specified\n",
1548        336723999 => "password already specified\n",
1549        336724000 => "uid already specified\n",
1550        336724001 => "gid already specified\n",
1551        336724002 => "project already specified\n",
1552        336724003 => "organization already specified\n",
1553        336724004 => "first name already specified\n",
1554        336724005 => "middle name already specified\n",
1555        336724006 => "last name already specified\n",
1556        336724008 => "invalid switch specified\n",
1557        336724009 => "ambiguous switch specified\n",
1558        336724010 => "no operation specified for parameters\n",
1559        336724011 => "no parameters allowed for this operation\n",
1560        336724012 => "incompatible switches specified\n",
1561        336724044 => "Invalid user name (maximum 31 bytes allowed)\n",
1562        336724045 => "Warning - maximum 8 significant bytes of password used\n",
1563        336724046 => "database already specified\n",
1564        336724047 => "database administrator name already specified\n",
1565        336724048 => "database administrator password already specified\n",
1566        336724049 => "SQL role name already specified\n",
1567        336920577 => "found unknown switch\n",
1568        336920578 => "please retry, giving a database name\n",
1569        336920579 => "Wrong ODS version, expected @1, encountered @2\n",
1570        336920580 => "Unexpected end of database file.\n",
1571        336920605 => "Can't open database file @1\n",
1572        336920606 => "Can't read a database page\n",
1573        336920607 => "System memory exhausted\n",
1574        336986113 => "Wrong value for access mode\n",
1575        336986114 => "Wrong value for write mode\n",
1576        336986115 => "Wrong value for reserve space\n",
1577        336986116 => "Unknown tag (@1) in info_svr_db_info block after isc_svc_query()\n",
1578        336986117 => "Unknown tag (@1) in isc_svc_query() results\n",
1579        336986118 => "Unknown switch '@1'\n",
1580        336986159 => "Wrong value for shutdown mode\n",
1581        336986160 => "could not open file @1\n",
1582        336986161 => "could not read file @1\n",
1583        336986162 => "empty file @1\n",
1584        336986164 => "Invalid or missing parameter for switch @1\n",
1585        336986170 => "Unknown tag (@1) in isc_info_svc_limbo_trans block after isc_svc_query()\n",
1586        336986171 => "Unknown tag (@1) in isc_spb_tra_state block after isc_svc_query()\n",
1587        336986172 => "Unknown tag (@1) in isc_spb_tra_advise block after isc_svc_query()\n",
1588        337051649 => "Switches trusted_user and trusted_role are not supported from command line\n",
1589        337117213 => "Missing parameter for switch @1\n",
1590        337117214 => "Only one of -LOCK, -UNLOCK, -FIXUP, -BACKUP or -RESTORE should be specified\n",
1591        337117215 => "Unrecognized parameter @1\n",
1592        337117216 => "Unknown switch @1\n",
1593        337117217 => "Fetch password can't be used in service mode\n",
1594        337117218 => "Error working with password file '@1'\n",
1595        337117219 => "Switch -SIZE can be used only with -LOCK\n",
1596        337117220 => "None of -LOCK, -UNLOCK, -FIXUP, -BACKUP or -RESTORE specified\n",
1597        337117223 => "IO error reading file: @1\n",
1598        337117224 => "IO error writing file: @1\n",
1599        337117225 => "IO error seeking file: @1\n",
1600        337117226 => "Error opening database file: @1\n",
1601        337117227 => "Error in posix_fadvise(@1) for database @2\n",
1602        337117228 => "Error creating database file: @1\n",
1603        337117229 => "Error opening backup file: @1\n",
1604        337117230 => "Error creating backup file: @1\n",
1605        337117231 => "Unexpected end of database file @1\n",
1606        337117232 => "Database @1 is not in state (@2) to be safely fixed up\n",
1607        337117233 => "Database error\n",
1608        337117234 => "Username or password is too long\n",
1609        337117235 => "Cannot find record for database '@1' backup level @2 in the backup history\n",
1610        337117236 => "Internal error. History query returned null SCN or GUID\n",
1611        337117237 => "Unexpected end of file when reading header of database file '@1' (stage @2)\n",
1612        337117238 => "Internal error. Database file is not locked. Flags are @1\n",
1613        337117239 => "Internal error. Cannot get backup guid clumplet\n",
1614        337117240 => "Internal error. Database page @1 had been changed during backup (page SCN=@2, backup SCN=@3)\n",
1615        337117241 => "Database file size is not a multiple of page size\n",
1616        337117242 => "Level 0 backup is not restored\n",
1617        337117243 => "Unexpected end of file when reading header of backup file: @1\n",
1618        337117244 => "Invalid incremental backup file: @1\n",
1619        337117245 => "Unsupported version @1 of incremental backup file: @2\n",
1620        337117246 => "Invalid level @1 of incremental backup file: @2, expected @3\n",
1621        337117247 => "Wrong order of backup files or invalid incremental backup file detected, file: @1\n",
1622        337117248 => "Unexpected end of backup file: @1\n",
1623        337117249 => "Error creating database file: @1 via copying from: @2\n",
1624        337117250 => "Unexpected end of file when reading header of restored database file (stage @1)\n",
1625        337117251 => "Cannot get backup guid clumplet from L0 backup\n",
1626        337117255 => "Wrong parameter @1 for switch -D, need ON or OFF\n",
1627        337117257 => "Terminated due to user request\n",
1628        337117259 => "Too complex decompress command (> @1 arguments)\n",
1629        337117261 => "Cannot find record for database '@1' backup GUID @2 in the backup history\n",
1630        337182750 => "conflicting actions '@1' and '@2' found\n",
1631        337182751 => "action switch not found\n",
1632        337182752 => "switch '@1' must be set only once\n",
1633        337182753 => "value for switch '@1' is missing\n",
1634        337182754 => "invalid value ('@1') for switch '@2'\n",
1635        337182755 => "unknown switch '@1' encountered\n",
1636        337182756 => "switch '@1' can be used by service only\n",
1637        337182757 => "switch '@1' can be used by interactive user only\n",
1638        337182758 => "mandatory parameter '@1' for switch '@2' is missing\n",
1639        337182759 => "parameter '@1' is incompatible with action '@2'\n",
1640        337182760 => "mandatory switch '@1' is missing\n",
1641        _ => "Error message not found",
1642    }
1643}
1644
1645/// Binary Language Representation constants
1646pub mod blr {
1647    pub const TEXT: u8 = 14;
1648    pub const TEXT2: u8 = 15; /* added in 3.2 JPN */
1649    pub const SHORT: u8 = 7;
1650    pub const LONG: u8 = 8;
1651    pub const QUAD: u8 = 9;
1652    pub const FLOAT: u8 = 10;
1653    pub const DOUBLE: u8 = 27;
1654    pub const D_FLOAT: u8 = 11;
1655    pub const TIMESTAMP: u8 = 35;
1656    pub const VARYING: u8 = 37;
1657    pub const VARYING2: u8 = 38; /* added in 3.2 JPN */
1658    pub const BLOB: u16 = 261;
1659    pub const CSTRING: u8 = 40;
1660    pub const CSTRING2: u8 = 41; /* added in 3.2 JPN */
1661    pub const BLOB_ID: u8 = 45; /* added from gds.h */
1662    pub const SQL_DATE: u8 = 12;
1663    pub const SQL_TIME: u8 = 13;
1664    pub const INT64: u8 = 16;
1665    pub const BLOB2: u8 = 17;
1666    pub const DOMAIN_NAME: u8 = 18;
1667    pub const DOMAIN_NAME2: u8 = 19;
1668    pub const NOT_NULLABLE: u8 = 20;
1669    pub const COLUMN_NAME: u8 = 21;
1670    pub const COLUMN_NAME2: u8 = 22;
1671    pub const BOOL: u8 = 23;
1672    // first sub parameter for domain_name[2]
1673    pub const DOMAIN_TYPE_OF: u8 = 0;
1674    pub const DOMAIN_FULL: u8 = 1;
1675
1676    pub const INNER: u8 = 0;
1677    pub const LEFT: u8 = 1;
1678    pub const RIGHT: u8 = 2;
1679    pub const FULL: u8 = 3;
1680    pub const GDS_CODE: u8 = 0;
1681    pub const SQL_CODE: u8 = 1;
1682    pub const EXCEPTION: u8 = 2;
1683    pub const TRIGGER_CODE: u8 = 3;
1684    pub const DEFAULT_CODE: u8 = 4;
1685    pub const RAISE: u8 = 5;
1686    pub const EXCEPTION_MSG: u8 = 6;
1687    pub const EXCEPTION_PARAMS: u8 = 7;
1688    pub const VERSION4: u8 = 4;
1689    pub const VERSION5: u8 = 5;
1690    //const VERSION6        : u8 =6;
1691    pub const EOC: u8 = 76;
1692    pub const END: u8 = 255;
1693    pub const ASSIGNMENT: u8 = 1;
1694    pub const BEGIN: u8 = 2;
1695    pub const DCL_VARIABLE: u8 = 3; /* added from gds.h */
1696    pub const MESSAGE: u8 = 4;
1697    pub const ERASE: u8 = 5;
1698    pub const FETCH: u8 = 6;
1699    pub const FOR: u8 = 7;
1700    pub const IF: u8 = 8;
1701    pub const LOOP: u8 = 9;
1702    pub const MODIFY: u8 = 10;
1703    pub const HANDLER: u8 = 11;
1704    pub const RECEIVE: u8 = 12;
1705    pub const SELECT: u8 = 13;
1706    pub const SEND: u8 = 14;
1707    pub const STORE: u8 = 15;
1708    pub const LABEL: u8 = 17;
1709    pub const LEAVE: u8 = 18;
1710    pub const STORE2: u8 = 19;
1711    pub const POST: u8 = 20;
1712    pub const LITERAL: u8 = 21;
1713    pub const DBKEY: u8 = 22;
1714    pub const FIELD: u8 = 23;
1715    pub const FID: u8 = 24;
1716    pub const PARAMETER: u8 = 25;
1717    pub const VARIABLE: u8 = 26;
1718    pub const AVERAGE: u8 = 27;
1719    pub const COUNT: u8 = 28;
1720    pub const MAXIMUM: u8 = 29;
1721    pub const MINIMUM: u8 = 30;
1722    pub const TOTAL: u8 = 31;
1723    // unused codes: 32..33
1724    pub const ADD: u8 = 34;
1725    pub const SUBTRACT: u8 = 35;
1726    pub const MULTIPLY: u8 = 36;
1727    pub const DIVIDE: u8 = 37;
1728    pub const NEGATE: u8 = 38;
1729    pub const CONCATENATE: u8 = 39;
1730    pub const SUBSTRING: u8 = 40;
1731    pub const PARAMETER2: u8 = 41;
1732    pub const FROM: u8 = 42;
1733    pub const VIA: u8 = 43;
1734    pub const USER_NAME: u8 = 44; /* added from gds.h */
1735    pub const NULL: u8 = 45;
1736    pub const EQUIV: u8 = 46;
1737    pub const EQL: u8 = 47;
1738    pub const NEQ: u8 = 48;
1739    pub const GTR: u8 = 49;
1740    pub const GEQ: u8 = 50;
1741    pub const LSS: u8 = 51;
1742    pub const LEQ: u8 = 52;
1743    pub const CONTAINING: u8 = 53;
1744    pub const MATCHING: u8 = 54;
1745    pub const STARTING: u8 = 55;
1746    pub const BETWEEN: u8 = 56;
1747    pub const OR: u8 = 57;
1748    pub const AND: u8 = 58;
1749    pub const NOT: u8 = 59;
1750    pub const ANY: u8 = 60;
1751    pub const MISSING: u8 = 61;
1752    pub const UNIQUE: u8 = 62;
1753    pub const LIKE: u8 = 63;
1754    // unused codes: 64..66
1755    pub const RSE: u8 = 67;
1756    pub const FIRST: u8 = 68;
1757    pub const PROJECT: u8 = 69;
1758    pub const SORT: u8 = 70;
1759    pub const BOOLEAN: u8 = 71;
1760    pub const ASCENDING: u8 = 72;
1761    pub const DESCENDING: u8 = 73;
1762    pub const RELATION: u8 = 74;
1763    pub const RID: u8 = 75;
1764    pub const UNION: u8 = 76;
1765    pub const MAP: u8 = 77;
1766    pub const GROUP_BY: u8 = 78;
1767    pub const AGGREGATE: u8 = 79;
1768    pub const JOIN_TYPE: u8 = 80;
1769    // unused codes: 81..82
1770    pub const AGG_COUNT: u8 = 83;
1771    pub const AGG_MAX: u8 = 84;
1772    pub const AGG_MIN: u8 = 85;
1773    pub const AGG_TOTAL: u8 = 86;
1774    pub const AGG_AVERAGE: u8 = 87;
1775    pub const PARAMETER3: u8 = 88; /* same as Rdb definition */
1776    /* unsupported
1777    const RUN_MAX        : u8 =89;
1778    const RUN_MIN        : u8 =90;
1779    const RUN_TOTAL        : u8 =91;
1780    const RUN_AVERAGE        : u8 =92;
1781    */
1782    pub const AGG_COUNT2: u8 = 93;
1783    pub const AGG_COUNT_DISTINCT: u8 = 94;
1784    pub const AGG_TOTAL_DISTINCT: u8 = 95;
1785    pub const AGG_AVERAGE_DISTINCT: u8 = 96;
1786    // unused codes: 97..99
1787    pub const FUNCTION: u8 = 100;
1788    pub const GEN_ID: u8 = 101;
1789    ///const PROT_MASK        : u8 =102;
1790    pub const UPCASE: u8 = 103;
1791    ///const LOCK_STATE        : u8 =104;
1792    pub const VALUE_IF: u8 = 105;
1793    pub const MATCHING2: u8 = 106;
1794    pub const INDEX: u8 = 107;
1795    pub const ANSI_LIKE: u8 = 108;
1796    pub const SCROLLABLE: u8 = 109;
1797    // unused codes: 110..117
1798    pub const RUN_COUNT: u8 = 118; /* changed from 88 to avoid conflict with parameter3 */
1799    pub const RS_STREAM: u8 = 119;
1800    pub const EXEC_PROC: u8 = 120;
1801    // unused codes: 121..123
1802    pub const PROCEDURE: u8 = 124;
1803    pub const PID: u8 = 125;
1804    pub const EXEC_PID: u8 = 126;
1805    pub const SINGULAR: u8 = 127;
1806    pub const ABORT: u8 = 128;
1807    pub const BLOCK: u8 = 129;
1808    pub const ERROR_HANDLER: u8 = 130;
1809    pub const CAST: u8 = 131;
1810    pub const PID2: u8 = 132;
1811    pub const PROCEDURE2: u8 = 133;
1812    pub const START_SAVEPOINT: u8 = 134;
1813    pub const END_SAVEPOINT: u8 = 135;
1814    // unused codes: 136..138
1815    pub const PLAN: u8 = 139; /* access plan items */
1816    pub const MERGE: u8 = 140;
1817    pub const JOIN: u8 = 141;
1818    pub const SEQUENTIAL: u8 = 142;
1819    pub const NAVIGATIONAL: u8 = 143;
1820    pub const INDICES: u8 = 144;
1821    pub const RETRIEVE: u8 = 145;
1822    pub const RELATION2: u8 = 146;
1823    pub const RID2: u8 = 147;
1824    // unused codes: 148..149
1825    pub const SET_GENERATOR: u8 = 150;
1826    pub const ANSI_ANY: u8 = 151; /* required for NULL handling */
1827    pub const EXISTS: u8 = 152; /* required for NULL handling */
1828    // unused codes: 153
1829    pub const RECORD_VERSION: u8 = 154; /* get tid of record */
1830    pub const STALL: u8 = 155; /* fake server stall */
1831    // unused codes: 156..157
1832    pub const ANSI_ALL: u8 = 158; /* required for NULL handling */
1833    pub const EXTRACT: u8 = 159;
1834    /* sub parameters for extract */
1835    pub const EXTRACT_YEAR: u8 = 0;
1836    pub const EXTRACT_MONTH: u8 = 1;
1837    pub const EXTRACT_DAY: u8 = 2;
1838    pub const EXTRACT_HOUR: u8 = 3;
1839    pub const EXTRACT_MINUTE: u8 = 4;
1840    pub const EXTRACT_SECOND: u8 = 5;
1841    pub const EXTRACT_WEEKDAY: u8 = 6;
1842    pub const EXTRACT_YEARDAY: u8 = 7;
1843    pub const EXTRACT_MILLISECOND: u8 = 8;
1844    pub const EXTRACT_WEEK: u8 = 9;
1845    pub const CURRENT_DATE: u8 = 160;
1846    pub const CURRENT_TIMESTAMP: u8 = 161;
1847    pub const CURRENT_TIME: u8 = 162;
1848    /* These codes reuse  code space */
1849    pub const POST_ARG: u8 = 163;
1850    pub const EXEC_INTO: u8 = 164;
1851    pub const USER_SAVEPOINT: u8 = 165;
1852    pub const DCL_CURSOR: u8 = 166;
1853    pub const CURSOR_STMT: u8 = 167;
1854    pub const CURRENT_TIMESTAMP2: u8 = 168;
1855    pub const CURRENT_TIME2: u8 = 169;
1856    pub const AGG_LIST: u8 = 170;
1857    pub const AGG_LIST_DISTINCT: u8 = 171;
1858    pub const MODIFY2: u8 = 172;
1859    // unused codes: 173
1860    /* FB 1.0 specific  */
1861    pub const CURRENT_ROLE: u8 = 174;
1862    pub const SKIP: u8 = 175;
1863    /* FB 1.5 specific  */
1864    pub const EXEC_SQL: u8 = 176;
1865    pub const INTERNAL_INFO: u8 = 177;
1866    pub const NULLSFIRST: u8 = 178;
1867    pub const WRITELOCK: u8 = 179;
1868    pub const NULLSLAST: u8 = 180;
1869    /* FB 2.0 specific  */
1870    pub const LOWCASE: u8 = 181;
1871    pub const STRLEN: u8 = 182;
1872    /* sub parameter for strlen */
1873    pub const STRLEN_BIT: u8 = 0;
1874    pub const STRLEN_CHAR: u8 = 1;
1875    pub const STRLEN_OCTET: u8 = 2;
1876    pub const TRIM: u8 = 183;
1877    /* first sub parameter for trim */
1878    pub const TRIM_BOTH: u8 = 0;
1879    pub const TRIM_LEADING: u8 = 1;
1880    pub const TRIM_TRAILING: u8 = 2;
1881    /* second sub parameter for trim */
1882    pub const TRIM_SPACES: u8 = 0;
1883    pub const TRIM_CHARACTERS: u8 = 1;
1884    /* These codes are actions for user-defined savepoints */
1885    pub const SAVEPOINT_SET: u8 = 0;
1886    pub const SAVEPOINT_RELEASE: u8 = 1;
1887    pub const SAVEPOINT_UNDO: u8 = 2;
1888    pub const SAVEPOINT_RELEASE_SINGLE: u8 = 3;
1889    /* These codes are actions for cursors */
1890    pub const CURSOR_OPEN: u8 = 0;
1891    pub const CURSOR_CLOSE: u8 = 1;
1892    pub const CURSOR_FETCH: u8 = 2;
1893    pub const CURSOR_FETCH_SCROLL: u8 = 3;
1894    /* scroll options */
1895    pub const SCROLL_FORWARD: u8 = 0;
1896    pub const SCROLL_BACKWARD: u8 = 1;
1897    pub const SCROLL_BOF: u8 = 2;
1898    pub const SCROLL_EOF: u8 = 3;
1899    pub const SCROLL_ABSOLUTE: u8 = 4;
1900    pub const SCROLL_RELATIVE: u8 = 5;
1901    /* FB 2.1 specific  */
1902    pub const INIT_VARIABLE: u8 = 184;
1903    pub const RECURSE: u8 = 185;
1904    pub const SYS_FUNCTION: u8 = 186;
1905    // FB 2.5 specific
1906    pub const AUTO_TRANS: u8 = 187;
1907    pub const SIMILAR: u8 = 188;
1908    pub const EXEC_STMT: u8 = 189;
1909    // subcodes of exec_stmt
1910    pub const EXEC_STMT_INPUTS: u8 = 1; // input parameters count
1911    pub const EXEC_STMT_OUTPUTS: u8 = 2; // output parameters count
1912    pub const EXEC_STMT_SQL: u8 = 3;
1913    pub const EXEC_STMT_PROC_BLOCK: u8 = 4;
1914    pub const EXEC_STMT_DATA_SRC: u8 = 5;
1915    pub const EXEC_STMT_USER: u8 = 6;
1916    pub const EXEC_STMT_PWD: u8 = 7;
1917    pub const EXEC_STMT_TRAN: u8 = 8; // not implemented yet
1918    pub const EXEC_STMT_TRAN_CLONE: u8 = 9; // make transaction parameters equal to current transaction
1919    pub const EXEC_STMT_PRIVS: u8 = 10;
1920    pub const EXEC_STMT_IN_PARAMS: u8 = 11; // not named input parameters
1921    pub const EXEC_STMT_IN_PARAMS2: u8 = 12; // named input parameters
1922    pub const EXEC_STMT_OUT_PARAMS: u8 = 13; // output parameters
1923    pub const EXEC_STMT_ROLE: u8 = 14;
1924    pub const STMT_EXPR: u8 = 190;
1925    pub const DERIVED_EXPR: u8 = 191;
1926    // FB 3.0 specific
1927    pub const PROCEDURE3: u8 = 192;
1928    pub const EXEC_PROC2: u8 = 193;
1929    pub const FUNCTION2: u8 = 194;
1930    pub const WINDOW: u8 = 195;
1931    pub const PARTITION_BY: u8 = 196;
1932    pub const CONTINUE_LOOP: u8 = 197;
1933    pub const PROCEDURE4: u8 = 198;
1934    pub const AGG_FUNCTION: u8 = 199;
1935    pub const SUBSTRING_SIMILAR: u8 = 200;
1936    pub const BOOL_AS_VALUE: u8 = 201;
1937    pub const COALESCE: u8 = 202;
1938    pub const DECODE: u8 = 203;
1939    pub const EXEC_SUBPROC: u8 = 204;
1940    pub const SUBPROC_DECL: u8 = 205;
1941    pub const SUBPROC: u8 = 206;
1942    pub const SUBFUNC_DECL: u8 = 207;
1943    pub const SUBFUNC: u8 = 208;
1944    pub const RECORD_VERSION2: u8 = 209;
1945}