qail_pg/protocol/
error.rs1use std::fmt;
6
7use qail_core::ast::Action;
8
9#[derive(Debug, Clone, PartialEq, Eq)]
11pub enum EncodeError {
12 NullByte,
14 TooManyParameters(usize),
16 MessageTooLarge(usize),
18 UnsupportedAction(Action),
20 UnsafeExpression(String),
22}
23
24impl fmt::Display for EncodeError {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 EncodeError::NullByte => {
28 write!(f, "Value contains NULL byte (0x00) which is invalid in PostgreSQL")
29 }
30 EncodeError::TooManyParameters(count) => {
31 write!(f, "Too many parameters: {} (Limit is 32767)", count)
32 }
33 EncodeError::MessageTooLarge(size) => {
34 write!(f, "Message too large: {} bytes (Limit is {})", size, i32::MAX)
35 }
36 EncodeError::UnsupportedAction(action) => {
37 write!(f, "Unsupported action {:?} in AST-native encoder", action)
38 }
39 EncodeError::UnsafeExpression(expr) => {
40 write!(f, "Unsafe expression rejected: {}", expr)
41 }
42 }
43 }
44}
45
46impl std::error::Error for EncodeError {}