Skip to main content

fraiseql_wire/protocol/
constants.rs

1//! Postgres protocol constants
2
3/// Protocol version 3.0
4pub const PROTOCOL_VERSION: i32 = 0x0003_0000;
5
6/// Message type tags
7pub mod tags {
8    /// Authentication request
9    pub const AUTHENTICATION: u8 = b'R';
10
11    /// Backend key data
12    pub const BACKEND_KEY_DATA: u8 = b'K';
13
14    /// Command complete
15    pub const COMMAND_COMPLETE: u8 = b'C';
16
17    /// Data row
18    pub const DATA_ROW: u8 = b'D';
19
20    /// Error response
21    pub const ERROR_RESPONSE: u8 = b'E';
22
23    /// Notice response
24    pub const NOTICE_RESPONSE: u8 = b'N';
25
26    /// Parameter status
27    pub const PARAMETER_STATUS: u8 = b'S';
28
29    /// Ready for query
30    pub const READY_FOR_QUERY: u8 = b'Z';
31
32    /// Row description
33    pub const ROW_DESCRIPTION: u8 = b'T';
34}
35
36/// Authentication types
37pub mod auth {
38    /// Authentication successful
39    pub const OK: i32 = 0;
40
41    /// Cleartext password required
42    pub const CLEARTEXT_PASSWORD: i32 = 3;
43
44    /// MD5 password required
45    pub const MD5_PASSWORD: i32 = 5;
46
47    /// SASL mechanisms available (Postgres 10+)
48    pub const SASL: i32 = 10;
49
50    /// SASL server challenge
51    pub const SASL_CONTINUE: i32 = 11;
52
53    /// SASL server final message
54    pub const SASL_FINAL: i32 = 12;
55}
56
57/// Transaction status
58pub mod tx_status {
59    /// Idle (not in transaction)
60    pub const IDLE: u8 = b'I';
61
62    /// In transaction block
63    pub const IN_TRANSACTION: u8 = b'T';
64
65    /// Failed transaction (queries will be rejected until END)
66    pub const FAILED: u8 = b'E';
67}