clickhouse_arrow/native/
error_codes.rs

1use std::collections::HashMap;
2use std::sync::LazyLock;
3
4use super::protocol::ServerException;
5use crate::Error;
6
7/// Represents a server error mapped to internal severity
8#[derive(Debug, Clone)]
9pub struct ServerError {
10    pub error:       Severity,
11    pub code:        i32,
12    pub name:        String,
13    pub message:     String,
14    pub stack_trace: String,
15}
16
17impl ServerError {
18    pub(crate) fn is_fatal(&self) -> bool { matches!(self.error, Severity::Server(_)) }
19}
20
21impl From<ServerError> for Error {
22    fn from(error: ServerError) -> Self { Error::ServerException(error) }
23}
24
25impl std::fmt::Display for ServerError {
26    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27        writeln!(f, "Exception:")?;
28        writeln!(f, "  Error={}", self.error)?;
29        writeln!(f, "  Code={}", self.code)?;
30        writeln!(f, "  Name={}", self.name)?;
31        writeln!(f, "  Message={}", self.message)?;
32        writeln!(f, "Stack Trace:")?;
33        // Split the stack trace by newlines and format each line with proper indentation
34        for line in self.stack_trace.lines() {
35            writeln!(f, "  {line}")?;
36        }
37        Ok(())
38    }
39}
40
41/// Helper function to match server exception to server error
42pub(super) fn map_exception_to_error(exception: ServerException) -> ServerError {
43    ServerError {
44        error:       map_error_code(exception.code),
45        code:        exception.code,
46        name:        exception.name,
47        message:     exception.message,
48        stack_trace: exception.stack_trace,
49    }
50}
51
52/// Helper to map error codes to `ClickHouseError`
53#[expect(clippy::too_many_lines)]
54pub(crate) fn map_error_code(code: i32) -> Severity {
55    map_error_to_severity(
56        match *CLICKHOUSE_ERROR_CODES.get(&code).unwrap_or(&"UNKNOWN_ERROR") {
57            // Syntax errors
58            "ENGINE_REQUIRED" => ClickHouseError::EngineRequired,
59            "SYNTAX_ERROR" => ClickHouseError::SyntaxError,
60            "CANNOT_PARSE_TEXT" => ClickHouseError::CannotParseText,
61            "CANNOT_PARSE_ESCAPE_SEQUENCE" => ClickHouseError::CannotParseEscapeSequence,
62            "CANNOT_PARSE_QUOTED_STRING" => ClickHouseError::CannotParseQuotedString,
63            "CANNOT_PARSE_DATE" => ClickHouseError::CannotParseDate,
64            "CANNOT_PARSE_DATETIME" => ClickHouseError::CannotParseDateTime,
65            "CANNOT_PARSE_NUMBER" => ClickHouseError::CannotParseNumber,
66            "CANNOT_PARSE_INPUT_ASSERTION_FAILED" => {
67                ClickHouseError::CannotParseInputAssertionFailed
68            }
69            "CANNOT_PARSE_DOMAIN_VALUE_FROM_STRING" => ClickHouseError::CannotParseDomainValue,
70            "CANNOT_PARSE_BOOL" => ClickHouseError::CannotParseBool,
71            "ILLEGAL_SYNTAX_FOR_DATA_TYPE" => ClickHouseError::IllegalSyntaxForDataType,
72            "ILLEGAL_SYNTAX_FOR_CODEC_TYPE" => ClickHouseError::IllegalSyntaxForCodecType,
73            "INVALID_TEMPLATE_FORMAT" => ClickHouseError::InvalidTemplateFormat,
74            "MULTIPLE_EXPRESSIONS_FOR_ALIAS" => ClickHouseError::MultipleExpressionsForAlias,
75
76            // Protocol level errors
77            "UNKNOWN_COMPRESSION_METHOD" => ClickHouseError::UnknownCompressionMethod,
78            "CHECKSUM_DOESNT_MATCH" => ClickHouseError::ChecksumDoesntMatch,
79            "UNKNOWN_PACKET_FROM_CLIENT" => ClickHouseError::UnknownPacketFromClient,
80            "UNKNOWN_PACKET_FROM_SERVER" => ClickHouseError::UnknownPacketFromServer,
81            "UNEXPECTED_PACKET_FROM_CLIENT" => ClickHouseError::UnexpectedPacketFromClient,
82            "UNEXPECTED_PACKET_FROM_SERVER" => ClickHouseError::UnexpectedPacketFromServer,
83            "TOO_SMALL_BUFFER_SIZE" => ClickHouseError::TooSmallBufferSize,
84            "CANNOT_READ_FROM_SOCKET" => ClickHouseError::CannotReadFromSocket,
85            "CANNOT_WRITE_TO_SOCKET" => ClickHouseError::CannotWriteToSocket,
86            "SOCKET_TIMEOUT" => ClickHouseError::SocketTimeout,
87            "NETWORK_ERROR" => ClickHouseError::NetworkError,
88            "CLIENT_HAS_CONNECTED_TO_WRONG_PORT" => ClickHouseError::ClientConnectedToWrongPort,
89            "PROTOCOL_VERSION_MISMATCH" => ClickHouseError::ProtocolVersionMismatch,
90
91            // Data errors
92            "TOO_LARGE_SIZE_COMPRESSED" => ClickHouseError::TooLargeSizeCompressed,
93            "DUPLICATE_COLUMN" => ClickHouseError::DuplicateColumn,
94            "SIZES_OF_COLUMNS_DOESNT_MATCH" => ClickHouseError::SizesOfColumnsDoesntMatch,
95            "NUMBER_OF_COLUMNS_DOESNT_MATCH" => ClickHouseError::NumberOfColumnsDoesntMatch,
96            "UNEXPECTED_END_OF_FILE" => ClickHouseError::UnexpectedEOF,
97            "SIZE_OF_FIXED_STRING_DOESNT_MATCH" => ClickHouseError::SizeOfFixedStringDoesntMatch,
98            "CANNOT_READ_ALL_DATA" => ClickHouseError::CannotReadAllData,
99            "INCORRECT_DATA" => ClickHouseError::IncorrectData,
100            "INCORRECT_ELEMENT_OF_SET" => ClickHouseError::IncorrectElementOfSet,
101            "CORRUPTED_DATA" => ClickHouseError::CorruptedData,
102            "SIZES_OF_ARRAYS_DONT_MATCH" => ClickHouseError::SizesOfArraysDontMatch,
103            "VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE" => ClickHouseError::ValueOutOfRangeOfDataType,
104            "TOO_LARGE_STRING_SIZE" => ClickHouseError::TooLargeStringSize,
105            "DECIMAL_OVERFLOW" => ClickHouseError::DecimalOverflow,
106            "EMPTY_DATA_PASSED" => ClickHouseError::EmptyDataPassed,
107            "NO_DATA_TO_INSERT" => ClickHouseError::NoDataToInsert,
108
109            // Query level errors
110            "UNKNOWN_TYPE" => ClickHouseError::UnknownType,
111            "NO_SUCH_COLUMN_IN_TABLE" => ClickHouseError::NoSuchColumnInTable,
112            "UNKNOWN_DATABASE" => ClickHouseError::UnknownDatabase,
113            "UNKNOWN_TABLE" => ClickHouseError::UnknownTable,
114            "THERE_IS_NO_COLUMN" => ClickHouseError::ThereIsNoColumn,
115            "NOT_FOUND_COLUMN_IN_BLOCK" => ClickHouseError::NotFoundColumnInBlock,
116            "BAD_ARGUMENTS" => ClickHouseError::BadArguments,
117            "ILLEGAL_TYPE_OF_ARGUMENT" => ClickHouseError::IllegalTypeOfArgument,
118            "TOO_MANY_ARGUMENTS_FOR_FUNCTION" => ClickHouseError::TooManyArgumentsForFunction,
119            "TOO_FEW_ARGUMENTS_FOR_FUNCTION" => ClickHouseError::TooFewArgumentsForFunction,
120            "UNKNOWN_FUNCTION" => ClickHouseError::UnknownFunction,
121            "UNKNOWN_IDENTIFIER" => ClickHouseError::UnknownIdentifier,
122            "TYPE_MISMATCH" => ClickHouseError::TypeMismatch,
123            "UNKNOWN_SETTING" => ClickHouseError::UnknownSetting,
124            "READONLY" => ClickHouseError::Readonly,
125            "TABLE_IS_READ_ONLY" => ClickHouseError::TableIsReadOnly,
126            "QUERY_IS_TOO_LARGE" => ClickHouseError::QueryIsTooLarge,
127            "EMPTY_QUERY" => ClickHouseError::EmptyQuery,
128            "TABLE_IS_DROPPED" => ClickHouseError::TableIsDropped,
129            "DATABASE_NOT_EMPTY" => ClickHouseError::DatabaseNotEmpty,
130            "UNKNOWN_FORMAT" => ClickHouseError::UnknownFormat,
131            "TABLE_ALREADY_EXISTS" => ClickHouseError::TableAlreadyExists,
132            "DATABASE_ALREADY_EXISTS" => ClickHouseError::DatabaseAlreadyExists,
133            "LIMIT_EXCEEDED" => ClickHouseError::LimitExceeded,
134            "TIMEOUT_EXCEEDED" => ClickHouseError::TimeoutExceeded,
135            "TOO_MANY_ROWS" => ClickHouseError::TooManyRows,
136            "TOO_MANY_COLUMNS" => ClickHouseError::TooManyColumns,
137            "TOO_DEEP_SUBQUERIES" => ClickHouseError::TooDeepSubqueries,
138            "MEMORY_LIMIT_EXCEEDED" => ClickHouseError::MemoryLimitExceeded,
139            "UNKNOWN_AGGREGATED_DATA_VARIANT" => ClickHouseError::UnknownAggregatedDataVariant,
140            "QUERY_WAS_CANCELLED" => ClickHouseError::QueryWasCancelled,
141            "SET_SIZE_LIMIT_EXCEEDED" => ClickHouseError::SetSizeLimitExceeded,
142            "INVALID_LIMIT_EXPRESSION" => ClickHouseError::InvalidLimitExpression,
143
144            // Server errors
145            "CANNOT_BLOCK_SIGNAL" => ClickHouseError::CannotBlockSignal,
146            "CANNOT_UNBLOCK_SIGNAL" => ClickHouseError::CannotUnblockSignal,
147            "CANNOT_MANIPULATE_SIGSET" => ClickHouseError::CannotManipulateSigset,
148            "CANNOT_WAIT_FOR_SIGNAL" => ClickHouseError::CannotWaitForSignal,
149            "THERE_IS_NO_SESSION" => ClickHouseError::ThereIsNoSession,
150            "CANNOT_CLOCK_GETTIME" => ClickHouseError::CannotClockGettime,
151            "NOT_ENOUGH_SPACE" => ClickHouseError::NotEnoughSpace,
152            "CANNOT_ALLOCATE_MEMORY" => ClickHouseError::CannotAllocateMemory,
153            "CANNOT_MREMAP" => ClickHouseError::CannotMremap,
154            "CANNOT_MUNMAP" => ClickHouseError::CannotMunmap,
155            "ABORTED" => ClickHouseError::Aborted,
156            "NOT_IMPLEMENTED" => ClickHouseError::NotImplemented,
157            "LOGICAL_ERROR" => ClickHouseError::LogicalError,
158            "SERVER_OVERLOADED" => ClickHouseError::ServerOverloaded,
159
160            // Authentication errors - treated like protocol errors
161            "UNKNOWN_USER" => ClickHouseError::UnknownUser,
162            "WRONG_PASSWORD" => ClickHouseError::WrongPassword,
163            "REQUIRED_PASSWORD" => ClickHouseError::RequiredPassword,
164            "IP_ADDRESS_NOT_ALLOWED" => ClickHouseError::IpAddressNotAllowed,
165            "ACCESS_DENIED" => ClickHouseError::AccessDenied,
166
167            "UNKOWN_ERROR" => ClickHouseError::Unknown,
168            e => ClickHouseError::Other(e.to_string()),
169        },
170        code,
171    )
172}
173
174fn map_error_to_severity(error: ClickHouseError, _code: i32) -> Severity {
175    match &error {
176        // Syntax errors
177        ClickHouseError::SyntaxError
178        | ClickHouseError::EngineRequired
179        | ClickHouseError::CannotParseText
180        | ClickHouseError::CannotParseEscapeSequence
181        | ClickHouseError::CannotParseQuotedString
182        | ClickHouseError::CannotParseDate
183        | ClickHouseError::CannotParseDateTime
184        | ClickHouseError::CannotParseNumber
185        | ClickHouseError::CannotParseInputAssertionFailed
186        | ClickHouseError::CannotParseDomainValue
187        | ClickHouseError::CannotParseBool
188        | ClickHouseError::IllegalSyntaxForDataType
189        | ClickHouseError::IllegalSyntaxForCodecType
190        | ClickHouseError::MultipleExpressionsForAlias
191        | ClickHouseError::InvalidTemplateFormat => Severity::Syntax(error),
192
193        // Protocol level errors
194        ClickHouseError::UnknownCompressionMethod
195        | ClickHouseError::ChecksumDoesntMatch
196        | ClickHouseError::UnknownPacketFromClient
197        | ClickHouseError::UnknownPacketFromServer
198        | ClickHouseError::UnexpectedPacketFromClient
199        | ClickHouseError::UnexpectedPacketFromServer
200        | ClickHouseError::TooSmallBufferSize
201        | ClickHouseError::CannotReadFromSocket
202        | ClickHouseError::CannotWriteToSocket
203        | ClickHouseError::SocketTimeout
204        | ClickHouseError::NetworkError
205        | ClickHouseError::ClientConnectedToWrongPort
206        | ClickHouseError::ProtocolVersionMismatch
207        | ClickHouseError::UnknownUser
208        | ClickHouseError::WrongPassword
209        | ClickHouseError::RequiredPassword
210        | ClickHouseError::IpAddressNotAllowed
211        | ClickHouseError::AccessDenied => Severity::Protocol(error),
212
213        // Data errors
214        ClickHouseError::TooLargeSizeCompressed
215        | ClickHouseError::DuplicateColumn
216        | ClickHouseError::SizesOfColumnsDoesntMatch
217        | ClickHouseError::NumberOfColumnsDoesntMatch
218        | ClickHouseError::UnexpectedEOF
219        | ClickHouseError::SizeOfFixedStringDoesntMatch
220        | ClickHouseError::CannotReadAllData
221        | ClickHouseError::IncorrectData
222        | ClickHouseError::IncorrectElementOfSet
223        | ClickHouseError::CorruptedData
224        | ClickHouseError::SizesOfArraysDontMatch
225        | ClickHouseError::ValueOutOfRangeOfDataType
226        | ClickHouseError::TooLargeStringSize
227        | ClickHouseError::DecimalOverflow
228        | ClickHouseError::EmptyDataPassed
229        | ClickHouseError::NoDataToInsert => Severity::Data(error),
230
231        // Query level errors
232        ClickHouseError::UnknownType
233        | ClickHouseError::NoSuchColumnInTable
234        | ClickHouseError::ThereIsNoColumn
235        | ClickHouseError::NotFoundColumnInBlock
236        | ClickHouseError::BadArguments
237        | ClickHouseError::IllegalTypeOfArgument
238        | ClickHouseError::TooManyArgumentsForFunction
239        | ClickHouseError::TooFewArgumentsForFunction
240        | ClickHouseError::UnknownFunction
241        | ClickHouseError::UnknownIdentifier
242        | ClickHouseError::TypeMismatch
243        | ClickHouseError::UnknownSetting
244        | ClickHouseError::Readonly
245        | ClickHouseError::TableIsReadOnly
246        | ClickHouseError::QueryIsTooLarge
247        | ClickHouseError::EmptyQuery
248        | ClickHouseError::TableIsDropped
249        | ClickHouseError::DatabaseNotEmpty
250        | ClickHouseError::UnknownFormat
251        | ClickHouseError::UnknownDatabase
252        | ClickHouseError::UnknownTable
253        | ClickHouseError::TableAlreadyExists
254        | ClickHouseError::DatabaseAlreadyExists
255        | ClickHouseError::LimitExceeded
256        | ClickHouseError::TimeoutExceeded
257        | ClickHouseError::TooManyRows
258        | ClickHouseError::TooManyColumns
259        | ClickHouseError::TooDeepSubqueries
260        | ClickHouseError::MemoryLimitExceeded
261        | ClickHouseError::UnknownAggregatedDataVariant
262        | ClickHouseError::QueryWasCancelled
263        | ClickHouseError::SetSizeLimitExceeded
264        | ClickHouseError::Aborted
265        | ClickHouseError::NotImplemented
266        | ClickHouseError::LogicalError
267        | ClickHouseError::InvalidLimitExpression => Severity::Query(error),
268
269        // Server errors - be conservative about what goes here
270        ClickHouseError::CannotBlockSignal
271        | ClickHouseError::CannotUnblockSignal
272        | ClickHouseError::CannotManipulateSigset
273        | ClickHouseError::CannotWaitForSignal
274        | ClickHouseError::ThereIsNoSession
275        | ClickHouseError::CannotClockGettime
276        | ClickHouseError::NotEnoughSpace
277        | ClickHouseError::CannotAllocateMemory
278        | ClickHouseError::CannotMremap
279        | ClickHouseError::CannotMunmap
280        | ClickHouseError::ServerOverloaded => Severity::Server(error),
281
282        // Unknown
283        _ => Severity::Unknown(error),
284    }
285}
286
287/// Wrapper to indicate level of severity of error
288#[derive(thiserror::Error, Debug, Clone)]
289pub enum Severity {
290    #[error("Syntax({0:?})")]
291    Syntax(ClickHouseError),
292    #[error("Query({0:?})")]
293    Query(ClickHouseError),
294    #[error("Data({0:?})")]
295    Data(ClickHouseError),
296    #[error("Protocol({0:?})")]
297    Protocol(ClickHouseError),
298    #[error("Server({0:?})")]
299    Server(ClickHouseError),
300    #[error("Unknown({0:?})")]
301    Unknown(ClickHouseError),
302}
303
304/// Common error codes mapped to concrete errors. Can be updated as needed.
305#[non_exhaustive]
306#[derive(thiserror::Error, Debug, Clone)]
307pub enum ClickHouseError {
308    #[error("Engine required")]
309    EngineRequired,
310    #[error("Compressed size too large")]
311    TooLargeSizeCompressed,
312    #[error("Unknown type")]
313    UnknownType,
314    #[error("Duplicate column")]
315    DuplicateColumn,
316    #[error("Column not found in table")]
317    NoSuchColumnInTable,
318    #[error("Column row lengths do not match")]
319    SizesOfColumnsDoesntMatch,
320    #[error("Column counts do not match")]
321    NumberOfColumnsDoesntMatch,
322    #[error("Unexpected end of file")]
323    UnexpectedEOF,
324    #[error("Database is unknown")]
325    UnknownDatabase,
326    #[error("Table is unknown")]
327    UnknownTable,
328    #[error("Unknown compression method")]
329    UnknownCompressionMethod,
330    #[error("Syntax error")]
331    SyntaxError,
332
333    // Signal handling errors
334    #[error("Cannot block signal")]
335    CannotBlockSignal,
336    #[error("Cannot unblock signal")]
337    CannotUnblockSignal,
338    #[error("Cannot manipulate signal set")]
339    CannotManipulateSigset,
340    #[error("Cannot wait for signal")]
341    CannotWaitForSignal,
342    #[error("No session available")]
343    ThereIsNoSession,
344    #[error("Cannot get clock time")]
345    CannotClockGettime,
346    #[error("Unknown setting")]
347    UnknownSetting,
348
349    // Parse errors
350    #[error("Cannot parse text")]
351    CannotParseText,
352    #[error("Cannot parse escape sequence")]
353    CannotParseEscapeSequence,
354    #[error("Cannot parse quoted string")]
355    CannotParseQuotedString,
356    #[error("Cannot parse input assertion failed")]
357    CannotParseInputAssertionFailed,
358    #[error("Cannot parse date")]
359    CannotParseDate,
360    #[error("Cannot parse datetime")]
361    CannotParseDateTime,
362    #[error("Cannot parse number")]
363    CannotParseNumber,
364    #[error("Cannot parse domain value from string")]
365    CannotParseDomainValue,
366    #[error("Cannot parse boolean")]
367    CannotParseBool,
368
369    // Column errors
370    #[error("There is no column")]
371    ThereIsNoColumn,
372    #[error("Column not found in block")]
373    NotFoundColumnInBlock,
374    #[error("Size of fixed string doesn't match")]
375    SizeOfFixedStringDoesntMatch,
376
377    // Data errors
378    #[error("Cannot read all data")]
379    CannotReadAllData,
380    #[error("Incorrect data")]
381    IncorrectData,
382    #[error("Incorrect element of set")]
383    IncorrectElementOfSet,
384    #[error("Corrupted data")]
385    CorruptedData,
386    #[error("Sizes of arrays don't match")]
387    SizesOfArraysDontMatch,
388    #[error("Value is out of range of data type")]
389    ValueOutOfRangeOfDataType,
390    #[error("String size too large")]
391    TooLargeStringSize,
392    #[error("Decimal overflow")]
393    DecimalOverflow,
394    #[error("Empty data passed")]
395    EmptyDataPassed,
396    #[error("No data to insert")]
397    NoDataToInsert,
398
399    // Function errors
400    #[error("Bad arguments")]
401    BadArguments,
402    #[error("Illegal type of argument")]
403    IllegalTypeOfArgument,
404    #[error("Too many arguments for function")]
405    TooManyArgumentsForFunction,
406    #[error("Too few arguments for function")]
407    TooFewArgumentsForFunction,
408    #[error("Unknown function")]
409    UnknownFunction,
410    #[error("Unknown identifier")]
411    UnknownIdentifier,
412    #[error("Type mismatch")]
413    TypeMismatch,
414
415    // Query errors
416    #[error("Read-only mode")]
417    Readonly,
418    #[error("Table is read only")]
419    TableIsReadOnly,
420    #[error("Query is too large")]
421    QueryIsTooLarge,
422    #[error("Empty query")]
423    EmptyQuery,
424    #[error("Table is dropped")]
425    TableIsDropped,
426    #[error("Database not empty")]
427    DatabaseNotEmpty,
428    #[error("Unknown format")]
429    UnknownFormat,
430    #[error("Table already exists")]
431    TableAlreadyExists,
432    #[error("Database already exists")]
433    DatabaseAlreadyExists,
434    #[error("Limit exceeded")]
435    LimitExceeded,
436    #[error("Timeout exceeded")]
437    TimeoutExceeded,
438    #[error("Too many rows")]
439    TooManyRows,
440    #[error("Too many columns")]
441    TooManyColumns,
442    #[error("Subqueries too deeply nested")]
443    TooDeepSubqueries,
444    #[error("Memory limit exceeded")]
445    MemoryLimitExceeded,
446    #[error("Unknown aggregated data variant")]
447    UnknownAggregatedDataVariant,
448    #[error("Query was cancelled")]
449    QueryWasCancelled,
450    #[error("Set size limit exceeded")]
451    SetSizeLimitExceeded,
452    #[error("Invalid limit expression")]
453    InvalidLimitExpression,
454
455    // Protocol errors
456    #[error("Checksum doesn't match")]
457    ChecksumDoesntMatch,
458    #[error("Unknown packet from client")]
459    UnknownPacketFromClient,
460    #[error("Unknown packet from server")]
461    UnknownPacketFromServer,
462    #[error("Unexpected packet from client")]
463    UnexpectedPacketFromClient,
464    #[error("Unexpected packet from server")]
465    UnexpectedPacketFromServer,
466    #[error("Buffer size too small")]
467    TooSmallBufferSize,
468    #[error("Cannot read from socket")]
469    CannotReadFromSocket,
470    #[error("Cannot write to socket")]
471    CannotWriteToSocket,
472    #[error("Socket timeout")]
473    SocketTimeout,
474    #[error("Network error")]
475    NetworkError,
476    #[error("Client has connected to the wrong port")]
477    ClientConnectedToWrongPort,
478    #[error("Protocol version mismatch")]
479    ProtocolVersionMismatch,
480
481    // Authentication errors
482    #[error("Unknown user")]
483    UnknownUser,
484    #[error("Wrong password")]
485    WrongPassword,
486    #[error("Password required")]
487    RequiredPassword,
488    #[error("IP address not allowed")]
489    IpAddressNotAllowed,
490    #[error("Access denied")]
491    AccessDenied,
492
493    // Server condition errors
494    #[error("Not enough space")]
495    NotEnoughSpace,
496    #[error("Cannot allocate memory")]
497    CannotAllocateMemory,
498    #[error("Cannot mremap")]
499    CannotMremap,
500    #[error("Cannot munmap")]
501    CannotMunmap,
502    #[error("Operation aborted")]
503    Aborted,
504    #[error("Not implemented")]
505    NotImplemented,
506    #[error("Logical error")]
507    LogicalError,
508    #[error("Server overloaded")]
509    ServerOverloaded,
510
511    // Syntax errors
512    #[error("Illegal syntax for data type")]
513    IllegalSyntaxForDataType,
514    #[error("Illegal syntax for codec type")]
515    IllegalSyntaxForCodecType,
516    #[error("Invalid template format")]
517    InvalidTemplateFormat,
518    #[error("Multiple expressions for alias")]
519    MultipleExpressionsForAlias,
520
521    #[error("Other error: {0}")]
522    Other(String),
523    #[error("Unknown error")]
524    Unknown,
525}
526
527pub(crate) static CLICKHOUSE_ERROR_CODES: LazyLock<HashMap<i32, &'static str>> =
528    LazyLock::new(|| {
529        HashMap::from_iter(vec![
530            (0, "OK"),
531            (1, "UNSUPPORTED_METHOD"),
532            (2, "UNSUPPORTED_PARAMETER"),
533            (3, "UNEXPECTED_END_OF_FILE"),
534            (4, "EXPECTED_END_OF_FILE"),
535            (6, "CANNOT_PARSE_TEXT"),
536            (7, "INCORRECT_NUMBER_OF_COLUMNS"),
537            (8, "THERE_IS_NO_COLUMN"),
538            (9, "SIZES_OF_COLUMNS_DOESNT_MATCH"),
539            (10, "NOT_FOUND_COLUMN_IN_BLOCK"),
540            (11, "POSITION_OUT_OF_BOUND"),
541            (12, "PARAMETER_OUT_OF_BOUND"),
542            (13, "SIZES_OF_COLUMNS_IN_TUPLE_DOESNT_MATCH"),
543            (15, "DUPLICATE_COLUMN"),
544            (16, "NO_SUCH_COLUMN_IN_TABLE"),
545            (19, "SIZE_OF_FIXED_STRING_DOESNT_MATCH"),
546            (20, "NUMBER_OF_COLUMNS_DOESNT_MATCH"),
547            (23, "CANNOT_READ_FROM_ISTREAM"),
548            (24, "CANNOT_WRITE_TO_OSTREAM"),
549            (25, "CANNOT_PARSE_ESCAPE_SEQUENCE"),
550            (26, "CANNOT_PARSE_QUOTED_STRING"),
551            (27, "CANNOT_PARSE_INPUT_ASSERTION_FAILED"),
552            (28, "CANNOT_PRINT_FLOAT_OR_DOUBLE_NUMBER"),
553            (32, "ATTEMPT_TO_READ_AFTER_EOF"),
554            (33, "CANNOT_READ_ALL_DATA"),
555            (34, "TOO_MANY_ARGUMENTS_FOR_FUNCTION"),
556            (35, "TOO_FEW_ARGUMENTS_FOR_FUNCTION"),
557            (36, "BAD_ARGUMENTS"),
558            (37, "UNKNOWN_ELEMENT_IN_AST"),
559            (38, "CANNOT_PARSE_DATE"),
560            (39, "TOO_LARGE_SIZE_COMPRESSED"),
561            (40, "CHECKSUM_DOESNT_MATCH"),
562            (41, "CANNOT_PARSE_DATETIME"),
563            (42, "NUMBER_OF_ARGUMENTS_DOESNT_MATCH"),
564            (43, "ILLEGAL_TYPE_OF_ARGUMENT"),
565            (44, "ILLEGAL_COLUMN"),
566            (46, "UNKNOWN_FUNCTION"),
567            (47, "UNKNOWN_IDENTIFIER"),
568            (48, "NOT_IMPLEMENTED"),
569            (49, "LOGICAL_ERROR"),
570            (50, "UNKNOWN_TYPE"),
571            (51, "EMPTY_LIST_OF_COLUMNS_QUERIED"),
572            (52, "COLUMN_QUERIED_MORE_THAN_ONCE"),
573            (53, "TYPE_MISMATCH"),
574            (55, "STORAGE_REQUIRES_PARAMETER"),
575            (56, "UNKNOWN_STORAGE"),
576            (57, "TABLE_ALREADY_EXISTS"),
577            (58, "TABLE_METADATA_ALREADY_EXISTS"),
578            (59, "ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER"),
579            (60, "UNKNOWN_TABLE"),
580            (62, "SYNTAX_ERROR"),
581            (63, "UNKNOWN_AGGREGATE_FUNCTION"),
582            (68, "CANNOT_GET_SIZE_OF_FIELD"),
583            (69, "ARGUMENT_OUT_OF_BOUND"),
584            (70, "CANNOT_CONVERT_TYPE"),
585            (71, "CANNOT_WRITE_AFTER_END_OF_BUFFER"),
586            (72, "CANNOT_PARSE_NUMBER"),
587            (73, "UNKNOWN_FORMAT"),
588            (74, "CANNOT_READ_FROM_FILE_DESCRIPTOR"),
589            (75, "CANNOT_WRITE_TO_FILE_DESCRIPTOR"),
590            (76, "CANNOT_OPEN_FILE"),
591            (77, "CANNOT_CLOSE_FILE"),
592            (78, "UNKNOWN_TYPE_OF_QUERY"),
593            (79, "INCORRECT_FILE_NAME"),
594            (80, "INCORRECT_QUERY"),
595            (81, "UNKNOWN_DATABASE"),
596            (82, "DATABASE_ALREADY_EXISTS"),
597            (83, "DIRECTORY_DOESNT_EXIST"),
598            (84, "DIRECTORY_ALREADY_EXISTS"),
599            (85, "FORMAT_IS_NOT_SUITABLE_FOR_INPUT"),
600            (86, "RECEIVED_ERROR_FROM_REMOTE_IO_SERVER"),
601            (87, "CANNOT_SEEK_THROUGH_FILE"),
602            (88, "CANNOT_TRUNCATE_FILE"),
603            (89, "UNKNOWN_COMPRESSION_METHOD"),
604            (90, "EMPTY_LIST_OF_COLUMNS_PASSED"),
605            (91, "SIZES_OF_MARKS_FILES_ARE_INCONSISTENT"),
606            (92, "EMPTY_DATA_PASSED"),
607            (93, "UNKNOWN_AGGREGATED_DATA_VARIANT"),
608            (94, "CANNOT_MERGE_DIFFERENT_AGGREGATED_DATA_VARIANTS"),
609            (95, "CANNOT_READ_FROM_SOCKET"),
610            (96, "CANNOT_WRITE_TO_SOCKET"),
611            (99, "UNKNOWN_PACKET_FROM_CLIENT"),
612            (100, "UNKNOWN_PACKET_FROM_SERVER"),
613            (101, "UNEXPECTED_PACKET_FROM_CLIENT"),
614            (102, "UNEXPECTED_PACKET_FROM_SERVER"),
615            (104, "TOO_SMALL_BUFFER_SIZE"),
616            (107, "FILE_DOESNT_EXIST"),
617            (108, "NO_DATA_TO_INSERT"),
618            (109, "CANNOT_BLOCK_SIGNAL"),
619            (110, "CANNOT_UNBLOCK_SIGNAL"),
620            (111, "CANNOT_MANIPULATE_SIGSET"),
621            (112, "CANNOT_WAIT_FOR_SIGNAL"),
622            (113, "THERE_IS_NO_SESSION"),
623            (114, "CANNOT_CLOCK_GETTIME"),
624            (115, "UNKNOWN_SETTING"),
625            (116, "THERE_IS_NO_DEFAULT_VALUE"),
626            (117, "INCORRECT_DATA"),
627            (119, "ENGINE_REQUIRED"),
628            (120, "CANNOT_INSERT_VALUE_OF_DIFFERENT_SIZE_INTO_TUPLE"),
629            (121, "UNSUPPORTED_JOIN_KEYS"),
630            (122, "INCOMPATIBLE_COLUMNS"),
631            (123, "UNKNOWN_TYPE_OF_AST_NODE"),
632            (124, "INCORRECT_ELEMENT_OF_SET"),
633            (125, "INCORRECT_RESULT_OF_SCALAR_SUBQUERY"),
634            (127, "ILLEGAL_INDEX"),
635            (128, "TOO_LARGE_ARRAY_SIZE"),
636            (129, "FUNCTION_IS_SPECIAL"),
637            (130, "CANNOT_READ_ARRAY_FROM_TEXT"),
638            (131, "TOO_LARGE_STRING_SIZE"),
639            (133, "AGGREGATE_FUNCTION_DOESNT_ALLOW_PARAMETERS"),
640            (134, "PARAMETERS_TO_AGGREGATE_FUNCTIONS_MUST_BE_LITERALS"),
641            (135, "ZERO_ARRAY_OR_TUPLE_INDEX"),
642            (137, "UNKNOWN_ELEMENT_IN_CONFIG"),
643            (138, "EXCESSIVE_ELEMENT_IN_CONFIG"),
644            (139, "NO_ELEMENTS_IN_CONFIG"),
645            (141, "SAMPLING_NOT_SUPPORTED"),
646            (142, "NOT_FOUND_NODE"),
647            (145, "UNKNOWN_OVERFLOW_MODE"),
648            (152, "UNKNOWN_DIRECTION_OF_SORTING"),
649            (153, "ILLEGAL_DIVISION"),
650            (156, "DICTIONARIES_WAS_NOT_LOADED"),
651            (158, "TOO_MANY_ROWS"),
652            (159, "TIMEOUT_EXCEEDED"),
653            (160, "TOO_SLOW"),
654            (161, "TOO_MANY_COLUMNS"),
655            (162, "TOO_DEEP_SUBQUERIES"),
656            (164, "READONLY"),
657            (165, "TOO_MANY_TEMPORARY_COLUMNS"),
658            (166, "TOO_MANY_TEMPORARY_NON_CONST_COLUMNS"),
659            (167, "TOO_DEEP_AST"),
660            (168, "TOO_BIG_AST"),
661            (169, "BAD_TYPE_OF_FIELD"),
662            (170, "BAD_GET"),
663            (172, "CANNOT_CREATE_DIRECTORY"),
664            (173, "CANNOT_ALLOCATE_MEMORY"),
665            (174, "CYCLIC_ALIASES"),
666            (179, "MULTIPLE_EXPRESSIONS_FOR_ALIAS"),
667            (180, "THERE_IS_NO_PROFILE"),
668            (181, "ILLEGAL_FINAL"),
669            (182, "ILLEGAL_PREWHERE"),
670            (183, "UNEXPECTED_EXPRESSION"),
671            (184, "ILLEGAL_AGGREGATION"),
672            (186, "UNSUPPORTED_COLLATION_LOCALE"),
673            (187, "COLLATION_COMPARISON_FAILED"),
674            (190, "SIZES_OF_ARRAYS_DONT_MATCH"),
675            (191, "SET_SIZE_LIMIT_EXCEEDED"),
676            (192, "UNKNOWN_USER"),
677            (193, "WRONG_PASSWORD"),
678            (194, "REQUIRED_PASSWORD"),
679            (195, "IP_ADDRESS_NOT_ALLOWED"),
680            (196, "UNKNOWN_ADDRESS_PATTERN_TYPE"),
681            (198, "DNS_ERROR"),
682            (199, "UNKNOWN_QUOTA"),
683            (201, "QUOTA_EXCEEDED"),
684            (202, "TOO_MANY_SIMULTANEOUS_QUERIES"),
685            (203, "NO_FREE_CONNECTION"),
686            (204, "CANNOT_FSYNC"),
687            (206, "ALIAS_REQUIRED"),
688            (207, "AMBIGUOUS_IDENTIFIER"),
689            (208, "EMPTY_NESTED_TABLE"),
690            (209, "SOCKET_TIMEOUT"),
691            (210, "NETWORK_ERROR"),
692            (211, "EMPTY_QUERY"),
693            (212, "UNKNOWN_LOAD_BALANCING"),
694            (213, "UNKNOWN_TOTALS_MODE"),
695            (214, "CANNOT_STATVFS"),
696            (215, "NOT_AN_AGGREGATE"),
697            (216, "QUERY_WITH_SAME_ID_IS_ALREADY_RUNNING"),
698            (217, "CLIENT_HAS_CONNECTED_TO_WRONG_PORT"),
699            (218, "TABLE_IS_DROPPED"),
700            (219, "DATABASE_NOT_EMPTY"),
701            (220, "DUPLICATE_INTERSERVER_IO_ENDPOINT"),
702            (221, "NO_SUCH_INTERSERVER_IO_ENDPOINT"),
703            (223, "UNEXPECTED_AST_STRUCTURE"),
704            (224, "REPLICA_IS_ALREADY_ACTIVE"),
705            (225, "NO_ZOOKEEPER"),
706            (226, "NO_FILE_IN_DATA_PART"),
707            (227, "UNEXPECTED_FILE_IN_DATA_PART"),
708            (228, "BAD_SIZE_OF_FILE_IN_DATA_PART"),
709            (229, "QUERY_IS_TOO_LARGE"),
710            (230, "NOT_FOUND_EXPECTED_DATA_PART"),
711            (231, "TOO_MANY_UNEXPECTED_DATA_PARTS"),
712            (232, "NO_SUCH_DATA_PART"),
713            (233, "BAD_DATA_PART_NAME"),
714            (234, "NO_REPLICA_HAS_PART"),
715            (235, "DUPLICATE_DATA_PART"),
716            (236, "ABORTED"),
717            (237, "NO_REPLICA_NAME_GIVEN"),
718            (238, "FORMAT_VERSION_TOO_OLD"),
719            (239, "CANNOT_MUNMAP"),
720            (240, "CANNOT_MREMAP"),
721            (241, "MEMORY_LIMIT_EXCEEDED"),
722            (242, "TABLE_IS_READ_ONLY"),
723            (243, "NOT_ENOUGH_SPACE"),
724            (244, "UNEXPECTED_ZOOKEEPER_ERROR"),
725            (246, "CORRUPTED_DATA"),
726            (248, "INVALID_PARTITION_VALUE"),
727            (251, "NO_SUCH_REPLICA"),
728            (252, "TOO_MANY_PARTS"),
729            (253, "REPLICA_ALREADY_EXISTS"),
730            (254, "NO_ACTIVE_REPLICAS"),
731            (255, "TOO_MANY_RETRIES_TO_FETCH_PARTS"),
732            (256, "PARTITION_ALREADY_EXISTS"),
733            (257, "PARTITION_DOESNT_EXIST"),
734            (258, "UNION_ALL_RESULT_STRUCTURES_MISMATCH"),
735            (260, "CLIENT_OUTPUT_FORMAT_SPECIFIED"),
736            (261, "UNKNOWN_BLOCK_INFO_FIELD"),
737            (262, "BAD_COLLATION"),
738            (263, "CANNOT_COMPILE_CODE"),
739            (264, "INCOMPATIBLE_TYPE_OF_JOIN"),
740            (265, "NO_AVAILABLE_REPLICA"),
741            (266, "MISMATCH_REPLICAS_DATA_SOURCES"),
742            (269, "INFINITE_LOOP"),
743            (270, "CANNOT_COMPRESS"),
744            (271, "CANNOT_DECOMPRESS"),
745            (272, "CANNOT_IO_SUBMIT"),
746            (273, "CANNOT_IO_GETEVENTS"),
747            (274, "AIO_READ_ERROR"),
748            (275, "AIO_WRITE_ERROR"),
749            (277, "INDEX_NOT_USED"),
750            (279, "ALL_CONNECTION_TRIES_FAILED"),
751            (280, "NO_AVAILABLE_DATA"),
752            (281, "DICTIONARY_IS_EMPTY"),
753            (282, "INCORRECT_INDEX"),
754            (283, "UNKNOWN_DISTRIBUTED_PRODUCT_MODE"),
755            (284, "WRONG_GLOBAL_SUBQUERY"),
756            (285, "TOO_FEW_LIVE_REPLICAS"),
757            (286, "UNSATISFIED_QUORUM_FOR_PREVIOUS_WRITE"),
758            (287, "UNKNOWN_FORMAT_VERSION"),
759            (288, "DISTRIBUTED_IN_JOIN_SUBQUERY_DENIED"),
760            (289, "REPLICA_IS_NOT_IN_QUORUM"),
761            (290, "LIMIT_EXCEEDED"),
762            (291, "DATABASE_ACCESS_DENIED"),
763            (293, "MONGODB_CANNOT_AUTHENTICATE"),
764            (294, "CANNOT_WRITE_TO_FILE"),
765            (295, "RECEIVED_EMPTY_DATA"),
766            (297, "SHARD_HAS_NO_CONNECTIONS"),
767            (298, "CANNOT_PIPE"),
768            (299, "CANNOT_FORK"),
769            (300, "CANNOT_DLSYM"),
770            (301, "CANNOT_CREATE_CHILD_PROCESS"),
771            (302, "CHILD_WAS_NOT_EXITED_NORMALLY"),
772            (303, "CANNOT_SELECT"),
773            (304, "CANNOT_WAITPID"),
774            (305, "TABLE_WAS_NOT_DROPPED"),
775            (306, "TOO_DEEP_RECURSION"),
776            (307, "TOO_MANY_BYTES"),
777            (308, "UNEXPECTED_NODE_IN_ZOOKEEPER"),
778            (309, "FUNCTION_CANNOT_HAVE_PARAMETERS"),
779            (318, "INVALID_CONFIG_PARAMETER"),
780            (319, "UNKNOWN_STATUS_OF_INSERT"),
781            (321, "VALUE_IS_OUT_OF_RANGE_OF_DATA_TYPE"),
782            (336, "UNKNOWN_DATABASE_ENGINE"),
783            (341, "UNFINISHED"),
784            (342, "METADATA_MISMATCH"),
785            (344, "SUPPORT_IS_DISABLED"),
786            (345, "TABLE_DIFFERS_TOO_MUCH"),
787            (346, "CANNOT_CONVERT_CHARSET"),
788            (347, "CANNOT_LOAD_CONFIG"),
789            (349, "CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN"),
790            (352, "AMBIGUOUS_COLUMN_NAME"),
791            (353, "INDEX_OF_POSITIONAL_ARGUMENT_IS_OUT_OF_RANGE"),
792            (354, "ZLIB_INFLATE_FAILED"),
793            (355, "ZLIB_DEFLATE_FAILED"),
794            (358, "INTO_OUTFILE_NOT_ALLOWED"),
795            (359, "TABLE_SIZE_EXCEEDS_MAX_DROP_SIZE_LIMIT"),
796            (360, "CANNOT_CREATE_CHARSET_CONVERTER"),
797            (361, "SEEK_POSITION_OUT_OF_BOUND"),
798            (362, "CURRENT_WRITE_BUFFER_IS_EXHAUSTED"),
799            (363, "CANNOT_CREATE_IO_BUFFER"),
800            (364, "RECEIVED_ERROR_TOO_MANY_REQUESTS"),
801            (366, "SIZES_OF_NESTED_COLUMNS_ARE_INCONSISTENT"),
802            (369, "ALL_REPLICAS_ARE_STALE"),
803            (370, "DATA_TYPE_CANNOT_BE_USED_IN_TABLES"),
804            (371, "INCONSISTENT_CLUSTER_DEFINITION"),
805            (372, "SESSION_NOT_FOUND"),
806            (373, "SESSION_IS_LOCKED"),
807            (374, "INVALID_SESSION_TIMEOUT"),
808            (375, "CANNOT_DLOPEN"),
809            (376, "CANNOT_PARSE_UUID"),
810            (377, "ILLEGAL_SYNTAX_FOR_DATA_TYPE"),
811            (378, "DATA_TYPE_CANNOT_HAVE_ARGUMENTS"),
812            (380, "CANNOT_KILL"),
813            (381, "HTTP_LENGTH_REQUIRED"),
814            (382, "CANNOT_LOAD_CATBOOST_MODEL"),
815            (383, "CANNOT_APPLY_CATBOOST_MODEL"),
816            (384, "PART_IS_TEMPORARILY_LOCKED"),
817            (385, "MULTIPLE_STREAMS_REQUIRED"),
818            (386, "NO_COMMON_TYPE"),
819            (387, "DICTIONARY_ALREADY_EXISTS"),
820            (388, "CANNOT_ASSIGN_OPTIMIZE"),
821            (389, "INSERT_WAS_DEDUPLICATED"),
822            (390, "CANNOT_GET_CREATE_TABLE_QUERY"),
823            (391, "EXTERNAL_LIBRARY_ERROR"),
824            (392, "QUERY_IS_PROHIBITED"),
825            (393, "THERE_IS_NO_QUERY"),
826            (394, "QUERY_WAS_CANCELLED"),
827            (395, "FUNCTION_THROW_IF_VALUE_IS_NON_ZERO"),
828            (396, "TOO_MANY_ROWS_OR_BYTES"),
829            (397, "QUERY_IS_NOT_SUPPORTED_IN_MATERIALIZED_VIEW"),
830            (398, "UNKNOWN_MUTATION_COMMAND"),
831            (399, "FORMAT_IS_NOT_SUITABLE_FOR_OUTPUT"),
832            (400, "CANNOT_STAT"),
833            (401, "FEATURE_IS_NOT_ENABLED_AT_BUILD_TIME"),
834            (402, "CANNOT_IOSETUP"),
835            (403, "INVALID_JOIN_ON_EXPRESSION"),
836            (404, "BAD_ODBC_CONNECTION_STRING"),
837            (406, "TOP_AND_LIMIT_TOGETHER"),
838            (407, "DECIMAL_OVERFLOW"),
839            (408, "BAD_REQUEST_PARAMETER"),
840            (410, "EXTERNAL_SERVER_IS_NOT_RESPONDING"),
841            (411, "PTHREAD_ERROR"),
842            (412, "NETLINK_ERROR"),
843            (413, "CANNOT_SET_SIGNAL_HANDLER"),
844            (415, "ALL_REPLICAS_LOST"),
845            (416, "REPLICA_STATUS_CHANGED"),
846            (417, "EXPECTED_ALL_OR_ANY"),
847            (418, "UNKNOWN_JOIN"),
848            (419, "MULTIPLE_ASSIGNMENTS_TO_COLUMN"),
849            (420, "CANNOT_UPDATE_COLUMN"),
850            (421, "CANNOT_ADD_DIFFERENT_AGGREGATE_STATES"),
851            (422, "UNSUPPORTED_URI_SCHEME"),
852            (423, "CANNOT_GETTIMEOFDAY"),
853            (424, "CANNOT_LINK"),
854            (425, "SYSTEM_ERROR"),
855            (427, "CANNOT_COMPILE_REGEXP"),
856            (429, "FAILED_TO_GETPWUID"),
857            (430, "MISMATCHING_USERS_FOR_PROCESS_AND_DATA"),
858            (431, "ILLEGAL_SYNTAX_FOR_CODEC_TYPE"),
859            (432, "UNKNOWN_CODEC"),
860            (433, "ILLEGAL_CODEC_PARAMETER"),
861            (434, "CANNOT_PARSE_PROTOBUF_SCHEMA"),
862            (435, "NO_COLUMN_SERIALIZED_TO_REQUIRED_PROTOBUF_FIELD"),
863            (436, "PROTOBUF_BAD_CAST"),
864            (437, "PROTOBUF_FIELD_NOT_REPEATED"),
865            (438, "DATA_TYPE_CANNOT_BE_PROMOTED"),
866            (439, "CANNOT_SCHEDULE_TASK"),
867            (440, "INVALID_LIMIT_EXPRESSION"),
868            (441, "CANNOT_PARSE_DOMAIN_VALUE_FROM_STRING"),
869            (442, "BAD_DATABASE_FOR_TEMPORARY_TABLE"),
870            (443, "NO_COLUMNS_SERIALIZED_TO_PROTOBUF_FIELDS"),
871            (444, "UNKNOWN_PROTOBUF_FORMAT"),
872            (445, "CANNOT_MPROTECT"),
873            (446, "FUNCTION_NOT_ALLOWED"),
874            (447, "HYPERSCAN_CANNOT_SCAN_TEXT"),
875            (448, "BROTLI_READ_FAILED"),
876            (449, "BROTLI_WRITE_FAILED"),
877            (450, "BAD_TTL_EXPRESSION"),
878            (451, "BAD_TTL_FILE"),
879            (452, "SETTING_CONSTRAINT_VIOLATION"),
880            (453, "MYSQL_CLIENT_INSUFFICIENT_CAPABILITIES"),
881            (454, "OPENSSL_ERROR"),
882            (455, "SUSPICIOUS_TYPE_FOR_LOW_CARDINALITY"),
883            (456, "UNKNOWN_QUERY_PARAMETER"),
884            (457, "BAD_QUERY_PARAMETER"),
885            (458, "CANNOT_UNLINK"),
886            (459, "CANNOT_SET_THREAD_PRIORITY"),
887            (460, "CANNOT_CREATE_TIMER"),
888            (461, "CANNOT_SET_TIMER_PERIOD"),
889            (463, "CANNOT_FCNTL"),
890            (464, "CANNOT_PARSE_ELF"),
891            (465, "CANNOT_PARSE_DWARF"),
892            (466, "INSECURE_PATH"),
893            (467, "CANNOT_PARSE_BOOL"),
894            (468, "CANNOT_PTHREAD_ATTR"),
895            (469, "VIOLATED_CONSTRAINT"),
896            (471, "INVALID_SETTING_VALUE"),
897            (472, "READONLY_SETTING"),
898            (473, "DEADLOCK_AVOIDED"),
899            (474, "INVALID_TEMPLATE_FORMAT"),
900            (475, "INVALID_WITH_FILL_EXPRESSION"),
901            (476, "WITH_TIES_WITHOUT_ORDER_BY"),
902            (477, "INVALID_USAGE_OF_INPUT"),
903            (478, "UNKNOWN_POLICY"),
904            (479, "UNKNOWN_DISK"),
905            (480, "UNKNOWN_PROTOCOL"),
906            (481, "PATH_ACCESS_DENIED"),
907            (482, "DICTIONARY_ACCESS_DENIED"),
908            (483, "TOO_MANY_REDIRECTS"),
909            (484, "INTERNAL_REDIS_ERROR"),
910            (487, "CANNOT_GET_CREATE_DICTIONARY_QUERY"),
911            (489, "INCORRECT_DICTIONARY_DEFINITION"),
912            (490, "CANNOT_FORMAT_DATETIME"),
913            (491, "UNACCEPTABLE_URL"),
914            (492, "ACCESS_ENTITY_NOT_FOUND"),
915            (493, "ACCESS_ENTITY_ALREADY_EXISTS"),
916            (495, "ACCESS_STORAGE_READONLY"),
917            (496, "QUOTA_REQUIRES_CLIENT_KEY"),
918            (497, "ACCESS_DENIED"),
919            (498, "LIMIT_BY_WITH_TIES_IS_NOT_SUPPORTED"),
920            (499, "S3_ERROR"),
921            (500, "AZURE_BLOB_STORAGE_ERROR"),
922            (501, "CANNOT_CREATE_DATABASE"),
923            (502, "CANNOT_SIGQUEUE"),
924            (503, "AGGREGATE_FUNCTION_THROW"),
925            (504, "FILE_ALREADY_EXISTS"),
926            (507, "UNABLE_TO_SKIP_UNUSED_SHARDS"),
927            (508, "UNKNOWN_ACCESS_TYPE"),
928            (509, "INVALID_GRANT"),
929            (510, "CACHE_DICTIONARY_UPDATE_FAIL"),
930            (511, "UNKNOWN_ROLE"),
931            (512, "SET_NON_GRANTED_ROLE"),
932            (513, "UNKNOWN_PART_TYPE"),
933            (514, "ACCESS_STORAGE_FOR_INSERTION_NOT_FOUND"),
934            (515, "INCORRECT_ACCESS_ENTITY_DEFINITION"),
935            (516, "AUTHENTICATION_FAILED"),
936            (517, "CANNOT_ASSIGN_ALTER"),
937            (518, "CANNOT_COMMIT_OFFSET"),
938            (519, "NO_REMOTE_SHARD_AVAILABLE"),
939            (520, "CANNOT_DETACH_DICTIONARY_AS_TABLE"),
940            (521, "ATOMIC_RENAME_FAIL"),
941            (523, "UNKNOWN_ROW_POLICY"),
942            (524, "ALTER_OF_COLUMN_IS_FORBIDDEN"),
943            (525, "INCORRECT_DISK_INDEX"),
944            (527, "NO_SUITABLE_FUNCTION_IMPLEMENTATION"),
945            (528, "CASSANDRA_INTERNAL_ERROR"),
946            (529, "NOT_A_LEADER"),
947            (530, "CANNOT_CONNECT_RABBITMQ"),
948            (531, "CANNOT_FSTAT"),
949            (532, "LDAP_ERROR"),
950            (535, "UNKNOWN_RAID_TYPE"),
951            (536, "CANNOT_RESTORE_FROM_FIELD_DUMP"),
952            (537, "ILLEGAL_MYSQL_VARIABLE"),
953            (538, "MYSQL_SYNTAX_ERROR"),
954            (539, "CANNOT_BIND_RABBITMQ_EXCHANGE"),
955            (540, "CANNOT_DECLARE_RABBITMQ_EXCHANGE"),
956            (541, "CANNOT_CREATE_RABBITMQ_QUEUE_BINDING"),
957            (542, "CANNOT_REMOVE_RABBITMQ_EXCHANGE"),
958            (543, "UNKNOWN_MYSQL_DATATYPES_SUPPORT_LEVEL"),
959            (544, "ROW_AND_ROWS_TOGETHER"),
960            (545, "FIRST_AND_NEXT_TOGETHER"),
961            (546, "NO_ROW_DELIMITER"),
962            (547, "INVALID_RAID_TYPE"),
963            (548, "UNKNOWN_VOLUME"),
964            (549, "DATA_TYPE_CANNOT_BE_USED_IN_KEY"),
965            (552, "UNRECOGNIZED_ARGUMENTS"),
966            (553, "LZMA_STREAM_ENCODER_FAILED"),
967            (554, "LZMA_STREAM_DECODER_FAILED"),
968            (555, "ROCKSDB_ERROR"),
969            (556, "SYNC_MYSQL_USER_ACCESS_ERROR"),
970            (557, "UNKNOWN_UNION"),
971            (558, "EXPECTED_ALL_OR_DISTINCT"),
972            (559, "INVALID_GRPC_QUERY_INFO"),
973            (560, "ZSTD_ENCODER_FAILED"),
974            (561, "ZSTD_DECODER_FAILED"),
975            (562, "TLD_LIST_NOT_FOUND"),
976            (563, "CANNOT_READ_MAP_FROM_TEXT"),
977            (564, "INTERSERVER_SCHEME_DOESNT_MATCH"),
978            (565, "TOO_MANY_PARTITIONS"),
979            (566, "CANNOT_RMDIR"),
980            (567, "DUPLICATED_PART_UUIDS"),
981            (568, "RAFT_ERROR"),
982            (569, "MULTIPLE_COLUMNS_SERIALIZED_TO_SAME_PROTOBUF_FIELD"),
983            (570, "DATA_TYPE_INCOMPATIBLE_WITH_PROTOBUF_FIELD"),
984            (571, "DATABASE_REPLICATION_FAILED"),
985            (572, "TOO_MANY_QUERY_PLAN_OPTIMIZATIONS"),
986            (573, "EPOLL_ERROR"),
987            (574, "DISTRIBUTED_TOO_MANY_PENDING_BYTES"),
988            (575, "UNKNOWN_SNAPSHOT"),
989            (576, "KERBEROS_ERROR"),
990            (577, "INVALID_SHARD_ID"),
991            (578, "INVALID_FORMAT_INSERT_QUERY_WITH_DATA"),
992            (579, "INCORRECT_PART_TYPE"),
993            (580, "CANNOT_SET_ROUNDING_MODE"),
994            (581, "TOO_LARGE_DISTRIBUTED_DEPTH"),
995            (582, "NO_SUCH_PROJECTION_IN_TABLE"),
996            (583, "ILLEGAL_PROJECTION"),
997            (584, "PROJECTION_NOT_USED"),
998            (585, "CANNOT_PARSE_YAML"),
999            (586, "CANNOT_CREATE_FILE"),
1000            (587, "CONCURRENT_ACCESS_NOT_SUPPORTED"),
1001            (588, "DISTRIBUTED_BROKEN_BATCH_INFO"),
1002            (589, "DISTRIBUTED_BROKEN_BATCH_FILES"),
1003            (590, "CANNOT_SYSCONF"),
1004            (591, "SQLITE_ENGINE_ERROR"),
1005            (592, "DATA_ENCRYPTION_ERROR"),
1006            (593, "ZERO_COPY_REPLICATION_ERROR"),
1007            (594, "BZIP2_STREAM_DECODER_FAILED"),
1008            (595, "BZIP2_STREAM_ENCODER_FAILED"),
1009            (596, "INTERSECT_OR_EXCEPT_RESULT_STRUCTURES_MISMATCH"),
1010            (597, "NO_SUCH_ERROR_CODE"),
1011            (598, "BACKUP_ALREADY_EXISTS"),
1012            (599, "BACKUP_NOT_FOUND"),
1013            (600, "BACKUP_VERSION_NOT_SUPPORTED"),
1014            (601, "BACKUP_DAMAGED"),
1015            (602, "NO_BASE_BACKUP"),
1016            (603, "WRONG_BASE_BACKUP"),
1017            (604, "BACKUP_ENTRY_ALREADY_EXISTS"),
1018            (605, "BACKUP_ENTRY_NOT_FOUND"),
1019            (606, "BACKUP_IS_EMPTY"),
1020            (607, "CANNOT_RESTORE_DATABASE"),
1021            (608, "CANNOT_RESTORE_TABLE"),
1022            (609, "FUNCTION_ALREADY_EXISTS"),
1023            (610, "CANNOT_DROP_FUNCTION"),
1024            (611, "CANNOT_CREATE_RECURSIVE_FUNCTION"),
1025            (614, "POSTGRESQL_CONNECTION_FAILURE"),
1026            (615, "CANNOT_ADVISE"),
1027            (616, "UNKNOWN_READ_METHOD"),
1028            (617, "LZ4_ENCODER_FAILED"),
1029            (618, "LZ4_DECODER_FAILED"),
1030            (619, "POSTGRESQL_REPLICATION_INTERNAL_ERROR"),
1031            (620, "QUERY_NOT_ALLOWED"),
1032            (621, "CANNOT_NORMALIZE_STRING"),
1033            (622, "CANNOT_PARSE_CAPN_PROTO_SCHEMA"),
1034            (623, "CAPN_PROTO_BAD_CAST"),
1035            (624, "BAD_FILE_TYPE"),
1036            (625, "IO_SETUP_ERROR"),
1037            (626, "CANNOT_SKIP_UNKNOWN_FIELD"),
1038            (627, "BACKUP_ENGINE_NOT_FOUND"),
1039            (628, "OFFSET_FETCH_WITHOUT_ORDER_BY"),
1040            (629, "HTTP_RANGE_NOT_SATISFIABLE"),
1041            (630, "HAVE_DEPENDENT_OBJECTS"),
1042            (631, "UNKNOWN_FILE_SIZE"),
1043            (632, "UNEXPECTED_DATA_AFTER_PARSED_VALUE"),
1044            (633, "QUERY_IS_NOT_SUPPORTED_IN_WINDOW_VIEW"),
1045            (634, "MONGODB_ERROR"),
1046            (635, "CANNOT_POLL"),
1047            (636, "CANNOT_EXTRACT_TABLE_STRUCTURE"),
1048            (637, "INVALID_TABLE_OVERRIDE"),
1049            (638, "SNAPPY_UNCOMPRESS_FAILED"),
1050            (639, "SNAPPY_COMPRESS_FAILED"),
1051            (640, "NO_HIVEMETASTORE"),
1052            (641, "CANNOT_APPEND_TO_FILE"),
1053            (642, "CANNOT_PACK_ARCHIVE"),
1054            (643, "CANNOT_UNPACK_ARCHIVE"),
1055            (645, "NUMBER_OF_DIMENSIONS_MISMATCHED"),
1056            (647, "CANNOT_BACKUP_TABLE"),
1057            (648, "WRONG_DDL_RENAMING_SETTINGS"),
1058            (649, "INVALID_TRANSACTION"),
1059            (650, "SERIALIZATION_ERROR"),
1060            (651, "CAPN_PROTO_BAD_TYPE"),
1061            (652, "ONLY_NULLS_WHILE_READING_SCHEMA"),
1062            (653, "CANNOT_PARSE_BACKUP_SETTINGS"),
1063            (654, "WRONG_BACKUP_SETTINGS"),
1064            (655, "FAILED_TO_SYNC_BACKUP_OR_RESTORE"),
1065            (659, "UNKNOWN_STATUS_OF_TRANSACTION"),
1066            (660, "HDFS_ERROR"),
1067            (661, "CANNOT_SEND_SIGNAL"),
1068            (662, "FS_METADATA_ERROR"),
1069            (663, "INCONSISTENT_METADATA_FOR_BACKUP"),
1070            (664, "ACCESS_STORAGE_DOESNT_ALLOW_BACKUP"),
1071            (665, "CANNOT_CONNECT_NATS"),
1072            (667, "NOT_INITIALIZED"),
1073            (668, "INVALID_STATE"),
1074            (669, "NAMED_COLLECTION_DOESNT_EXIST"),
1075            (670, "NAMED_COLLECTION_ALREADY_EXISTS"),
1076            (671, "NAMED_COLLECTION_IS_IMMUTABLE"),
1077            (672, "INVALID_SCHEDULER_NODE"),
1078            (673, "RESOURCE_ACCESS_DENIED"),
1079            (674, "RESOURCE_NOT_FOUND"),
1080            (675, "CANNOT_PARSE_IPV4"),
1081            (676, "CANNOT_PARSE_IPV6"),
1082            (677, "THREAD_WAS_CANCELED"),
1083            (678, "IO_URING_INIT_FAILED"),
1084            (679, "IO_URING_SUBMIT_ERROR"),
1085            (690, "MIXED_ACCESS_PARAMETER_TYPES"),
1086            (691, "UNKNOWN_ELEMENT_OF_ENUM"),
1087            (692, "TOO_MANY_MUTATIONS"),
1088            (693, "AWS_ERROR"),
1089            (694, "ASYNC_LOAD_CYCLE"),
1090            (695, "ASYNC_LOAD_FAILED"),
1091            (696, "ASYNC_LOAD_CANCELED"),
1092            (697, "CANNOT_RESTORE_TO_NONENCRYPTED_DISK"),
1093            (698, "INVALID_REDIS_STORAGE_TYPE"),
1094            (699, "INVALID_REDIS_TABLE_STRUCTURE"),
1095            (700, "USER_SESSION_LIMIT_EXCEEDED"),
1096            (701, "CLUSTER_DOESNT_EXIST"),
1097            (702, "CLIENT_INFO_DOES_NOT_MATCH"),
1098            (703, "INVALID_IDENTIFIER"),
1099            (704, "QUERY_CACHE_USED_WITH_NONDETERMINISTIC_FUNCTIONS"),
1100            (705, "TABLE_NOT_EMPTY"),
1101            (706, "LIBSSH_ERROR"),
1102            (707, "GCP_ERROR"),
1103            (708, "ILLEGAL_STATISTICS"),
1104            (709, "CANNOT_GET_REPLICATED_DATABASE_SNAPSHOT"),
1105            (710, "FAULT_INJECTED"),
1106            (711, "FILECACHE_ACCESS_DENIED"),
1107            (712, "TOO_MANY_MATERIALIZED_VIEWS"),
1108            (713, "BROKEN_PROJECTION"),
1109            (714, "UNEXPECTED_CLUSTER"),
1110            (715, "CANNOT_DETECT_FORMAT"),
1111            (716, "CANNOT_FORGET_PARTITION"),
1112            (717, "EXPERIMENTAL_FEATURE_ERROR"),
1113            (718, "TOO_SLOW_PARSING"),
1114            (719, "QUERY_CACHE_USED_WITH_SYSTEM_TABLE"),
1115            (720, "USER_EXPIRED"),
1116            (721, "DEPRECATED_FUNCTION"),
1117            (722, "ASYNC_LOAD_WAIT_FAILED"),
1118            (723, "PARQUET_EXCEPTION"),
1119            (724, "TOO_MANY_TABLES"),
1120            (725, "TOO_MANY_DATABASES"),
1121            (726, "UNEXPECTED_HTTP_HEADERS"),
1122            (727, "UNEXPECTED_TABLE_ENGINE"),
1123            (728, "UNEXPECTED_DATA_TYPE"),
1124            (729, "ILLEGAL_TIME_SERIES_TAGS"),
1125            (730, "REFRESH_FAILED"),
1126            (731, "QUERY_CACHE_USED_WITH_NON_THROW_OVERFLOW_MODE"),
1127            (733, "TABLE_IS_BEING_RESTARTED"),
1128            (734, "CANNOT_WRITE_AFTER_BUFFER_CANCELED"),
1129            (735, "QUERY_WAS_CANCELLED_BY_CLIENT"),
1130            (736, "DATALAKE_DATABASE_ERROR"),
1131            (737, "GOOGLE_CLOUD_ERROR"),
1132            (738, "PART_IS_LOCKED"),
1133            (739, "BUZZHOUSE"),
1134            (740, "POTENTIALLY_BROKEN_DATA_PART"),
1135            (741, "TABLE_UUID_MISMATCH"),
1136            (742, "DELTA_KERNEL_ERROR"),
1137            (743, "ICEBERG_SPECIFICATION_VIOLATION"),
1138            (744, "SESSION_ID_EMPTY"),
1139            (745, "SERVER_OVERLOADED"),
1140            (900, "DISTRIBUTED_CACHE_ERROR"),
1141            (901, "CANNOT_USE_DISTRIBUTED_CACHE"),
1142            (902, "PROTOCOL_VERSION_MISMATCH"),
1143            (903, "LICENSE_EXPIRED"),
1144            (999, "KEEPER_EXCEPTION"),
1145            (1000, "POCO_EXCEPTION"),
1146            (1001, "STD_EXCEPTION"),
1147            (1002, "UNKNOWN_EXCEPTION"),
1148            (1003, "SSH_EXCEPTION"),
1149        ])
1150    });