clickhouse_native_client/
protocol.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3#[repr(u64)]
4pub enum ServerCode {
5 Hello = 0,
7 Data = 1,
9 Exception = 2,
11 Progress = 3,
13 Pong = 4,
15 EndOfStream = 5,
17 ProfileInfo = 6,
19 Totals = 7,
21 Extremes = 8,
23 TablesStatusResponse = 9,
25 Log = 10,
27 TableColumns = 11,
29 PartUUIDs = 12,
31 ReadTaskRequest = 13,
33 ProfileEvents = 14,
35}
36
37impl TryFrom<u64> for ServerCode {
38 type Error = crate::Error;
39
40 fn try_from(value: u64) -> Result<Self, Self::Error> {
41 match value {
42 0 => Ok(ServerCode::Hello),
43 1 => Ok(ServerCode::Data),
44 2 => Ok(ServerCode::Exception),
45 3 => Ok(ServerCode::Progress),
46 4 => Ok(ServerCode::Pong),
47 5 => Ok(ServerCode::EndOfStream),
48 6 => Ok(ServerCode::ProfileInfo),
49 7 => Ok(ServerCode::Totals),
50 8 => Ok(ServerCode::Extremes),
51 9 => Ok(ServerCode::TablesStatusResponse),
52 10 => Ok(ServerCode::Log),
53 11 => Ok(ServerCode::TableColumns),
54 12 => Ok(ServerCode::PartUUIDs),
55 13 => Ok(ServerCode::ReadTaskRequest),
56 14 => Ok(ServerCode::ProfileEvents),
57 _ => Err(crate::Error::Protocol(format!(
58 "Unknown server code: {}",
59 value
60 ))),
61 }
62 }
63}
64
65#[derive(Debug, Clone, Copy, PartialEq, Eq)]
67#[repr(u64)]
68pub enum ClientCode {
69 Hello = 0,
71 Query = 1,
74 Data = 2,
76 Cancel = 3,
78 Ping = 4,
80}
81
82#[derive(Debug, Clone, Copy, PartialEq, Eq)]
84#[repr(u64)]
85pub enum CompressionState {
86 Disable = 0,
88 Enable = 1,
90}
91
92#[derive(Debug, Clone, Copy, PartialEq, Eq)]
94#[repr(u64)]
95pub enum Stage {
96 Complete = 2,
98}
99
100#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
102pub enum CompressionMethod {
103 #[default]
105 None = -1,
106 Lz4 = 1,
108 Zstd = 2,
110}
111
112#[cfg(test)]
113#[cfg_attr(coverage_nightly, coverage(off))]
114mod tests {
115 use super::*;
116
117 #[test]
118 fn test_server_code_conversion() {
119 assert_eq!(ServerCode::try_from(0).unwrap(), ServerCode::Hello);
120 assert_eq!(ServerCode::try_from(1).unwrap(), ServerCode::Data);
121 assert_eq!(
122 ServerCode::try_from(14).unwrap(),
123 ServerCode::ProfileEvents
124 );
125 assert!(ServerCode::try_from(99).is_err());
126 }
127
128 #[test]
129 fn test_compression_method_default() {
130 assert_eq!(CompressionMethod::default(), CompressionMethod::None);
131 }
132}