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