Build a pgwire v3 StartupMessage for `user=nodedb, database=nodedb`.
()
| 122 | |
| 123 | /// Build a pgwire v3 StartupMessage for `user=nodedb, database=nodedb`. |
| 124 | fn startup_message() -> Vec<u8> { |
| 125 | let mut params: Vec<u8> = Vec::new(); |
| 126 | for (k, v) in &[("user", "nodedb"), ("database", "nodedb")] { |
| 127 | params.extend_from_slice(k.as_bytes()); |
| 128 | params.push(0); |
| 129 | params.extend_from_slice(v.as_bytes()); |
| 130 | params.push(0); |
| 131 | } |
| 132 | params.push(0); // trailing null |
| 133 | |
| 134 | // Total length = 4 (length field) + 4 (protocol version) + params length. |
| 135 | let total_len = 4u32 + 4u32 + params.len() as u32; |
| 136 | let mut msg = Vec::with_capacity(total_len as usize); |
| 137 | msg.extend_from_slice(&total_len.to_be_bytes()); |
| 138 | // Protocol version 3.0: major=3, minor=0 → 0x00_03_00_00 |
| 139 | msg.extend_from_slice(&196608u32.to_be_bytes()); |
| 140 | msg.extend_from_slice(¶ms); |
| 141 | msg |
| 142 | } |
| 143 | |
| 144 | /// Build a pgwire simple Query message. |
| 145 | fn query_message(sql: &str) -> Vec<u8> { |
no test coverage detected