wasi_pg_client/protocol/
types.rs1pub use postgres_protocol::Oid;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum FormatCode {
5 Text = 0,
6 Binary = 1,
7}
8
9impl FormatCode {
10 pub fn from_u16(value: u16) -> Option<Self> {
11 match value {
12 0 => Some(FormatCode::Text),
13 1 => Some(FormatCode::Binary),
14 _ => None,
15 }
16 }
17
18 pub fn to_u16(self) -> u16 {
19 self as u16
20 }
21
22 pub fn to_i16(self) -> i16 {
23 self as i16
24 }
25}
26
27impl TryFrom<i16> for FormatCode {
28 type Error = &'static str;
29
30 fn try_from(value: i16) -> Result<Self, Self::Error> {
31 match value {
32 0 => Ok(FormatCode::Text),
33 1 => Ok(FormatCode::Binary),
34 _ => Err("invalid format code"),
35 }
36 }
37}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq)]
40pub enum TransactionStatus {
41 Idle,
42 InTransaction,
43 Failed,
44}
45
46impl TransactionStatus {
47 pub fn from_u8(byte: u8) -> Option<Self> {
48 match byte {
49 b'I' => Some(TransactionStatus::Idle),
50 b'T' => Some(TransactionStatus::InTransaction),
51 b'E' => Some(TransactionStatus::Failed),
52 _ => None,
53 }
54 }
55
56 pub fn to_u8(self) -> u8 {
57 match self {
58 TransactionStatus::Idle => b'I',
59 TransactionStatus::InTransaction => b'T',
60 TransactionStatus::Failed => b'E',
61 }
62 }
63}
64
65pub mod message_type {
66 pub const STARTUP: u8 = 0;
67 pub const QUERY: u8 = b'Q';
68 pub const PARSE: u8 = b'P';
69 pub const BIND: u8 = b'B';
70 pub const EXECUTE: u8 = b'E';
71 pub const DESCRIBE: u8 = b'D';
72 pub const SYNC: u8 = b'S';
73 pub const CLOSE: u8 = b'C';
74 pub const FLUSH: u8 = b'H';
75 pub const TERMINATE: u8 = b'X';
76 pub const DATA_ROW: u8 = b'D';
77 pub const COMMAND_COMPLETE: u8 = b'C';
78 pub const ERROR_RESPONSE: u8 = b'E';
79 pub const READY_FOR_QUERY: u8 = b'Z';
80 pub const AUTHENTICATION_REQUEST: u8 = b'R';
81 pub const PARAMETER_STATUS: u8 = b'S';
82 pub const BACKEND_KEY_DATA: u8 = b'K';
83 pub const NOTICE_RESPONSE: u8 = b'N';
84 pub const NOTIFICATION_RESPONSE: u8 = b'A';
85 pub const ROW_DESCRIPTION: u8 = b'T';
86 pub const PARAMETER_DESCRIPTION: u8 = b't';
87 pub const PARSE_COMPLETE: u8 = b'1';
88 pub const BIND_COMPLETE: u8 = b'2';
89 pub const CLOSE_COMPLETE: u8 = b'3';
90 pub const NO_DATA: u8 = b'n';
91 pub const PORTAL_SUSPENDED: u8 = b's';
92 pub const EMPTY_QUERY_RESPONSE: u8 = b'I';
93 pub const COPY_DATA: u8 = b'd';
94 pub const COPY_DONE: u8 = b'c';
95 pub const COPY_FAIL: u8 = b'f';
96 pub const COPY_IN_RESPONSE: u8 = b'G';
97 pub const COPY_OUT_RESPONSE: u8 = b'H';
98}
99
100pub mod auth {
101 pub const OK: i32 = 0;
102 pub const KERBEROS_V5: i32 = 2;
103 pub const CLEARTEXT_PASSWORD: i32 = 3;
104 pub const MD5_PASSWORD: i32 = 5;
105 pub const SCM_CREDENTIAL: i32 = 6;
106 pub const GSS: i32 = 7;
107 pub const GSS_CONTINUE: i32 = 8;
108 pub const SSPI: i32 = 9;
109 pub const SASL: i32 = 10;
110 pub const SASL_CONTINUE: i32 = 11;
111 pub const SASL_FINAL: i32 = 12;
112}
113
114pub mod error_field {
115 pub const SEVERITY: u8 = b'S';
116 pub const SQLSTATE: u8 = b'C';
117 pub const MESSAGE: u8 = b'M';
118 pub const DETAIL: u8 = b'D';
119 pub const HINT: u8 = b'H';
120 pub const POSITION: u8 = b'P';
121 pub const INTERNAL_POSITION: u8 = b'p';
122 pub const INTERNAL_QUERY: u8 = b'q';
123 pub const WHERE: u8 = b'W';
124 pub const SCHEMA_NAME: u8 = b's';
125 pub const TABLE_NAME: u8 = b't';
126 pub const COLUMN_NAME: u8 = b'c';
127 pub const DATA_TYPE_NAME: u8 = b'd';
128 pub const CONSTRAINT_NAME: u8 = b'n';
129 pub const FILE: u8 = b'F';
130 pub const LINE: u8 = b'L';
131 pub const ROUTINE: u8 = b'R';
132}