pub struct WireConn {
pub params: HashMap<String, String>,
/* private fields */
}Expand description
Raw PostgreSQL wire connection. Handles TCP I/O, buffered reading, and authentication.
Fields§
§params: HashMap<String, String>Server parameters reported via ParameterStatus during startup.
PostgreSQL reports a small set of GUCs it considers useful to clients:
typically server_version, server_encoding, client_encoding,
application_name, is_superuser, session_authorization,
DateStyle, IntervalStyle, TimeZone, integer_datetimes, and
standard_conforming_strings. The exact set depends on the server
version and its GUC_REPORT configuration.
This map is populated once on connect and is not kept in sync when
the server emits later ParameterStatus messages (for example after
SET TimeZone = ...). Treat these values as startup defaults, not a
live view of the session state.
Implementations§
Source§impl WireConn
impl WireConn
Sourcepub fn pid(&self) -> i32
pub fn pid(&self) -> i32
Backend process ID assigned by the server. Useful for logging and for
building a cancel token. The secret key that pairs with this PID is
intentionally not exposed; use cancel_token() to obtain a token that
can send a cancel request.
Sourcepub fn auth_mechanism(&self) -> &'static str
pub fn auth_mechanism(&self) -> &'static str
Authentication mechanism the server selected during startup.
Returns one of "trust", "cleartext", "md5", "SCRAM-SHA-256",
or "SCRAM-SHA-256-PLUS". "SCRAM-SHA-256-PLUS" confirms that
tls-server-end-point channel binding was negotiated.
Source§impl WireConn
impl WireConn
Sourcepub fn has_pending_data(&self) -> bool
pub fn has_pending_data(&self) -> bool
Check if the connection has unconsumed data in the receive buffer.
Sourcepub async fn connect(
addr: &str,
user: &str,
password: &str,
database: &str,
) -> Result<Self, PgWireError>
pub async fn connect( addr: &str, user: &str, password: &str, database: &str, ) -> Result<Self, PgWireError>
Connect to PostgreSQL and perform authentication.
Sourcepub async fn connect_with_params(
addr: &str,
user: &str,
password: &str,
database: &str,
startup_params: &[(&str, &str)],
) -> Result<Self, PgWireError>
pub async fn connect_with_params( addr: &str, user: &str, password: &str, database: &str, startup_params: &[(&str, &str)], ) -> Result<Self, PgWireError>
Connect with additional startup parameters.
Parameters are sent in the startup message and appear in pg_stat_activity.
Common parameters: application_name, client_encoding, options.
use pg_wired::WireConn;
let _conn = WireConn::connect_with_params(
"127.0.0.1:5432", "user", "pass", "mydb",
&[("application_name", "my-service")],
).await?;Sourcepub async fn connect_with_options(
addr: &str,
user: &str,
password: &str,
database: &str,
startup_params: &[(&str, &str)],
tls_mode: TlsMode,
) -> Result<Self, PgWireError>
pub async fn connect_with_options( addr: &str, user: &str, password: &str, database: &str, startup_params: &[(&str, &str)], tls_mode: TlsMode, ) -> Result<Self, PgWireError>
Connect with startup parameters and an explicit TLS mode.
Uses the system root trust store (webpki-roots) for certificate
verification. To override the trust store, supply a client
certificate, or otherwise customize TLS, use
Self::connect_with_tls_config.
Sourcepub async fn connect_with_tls_config(
addr: &str,
user: &str,
password: &str,
database: &str,
startup_params: &[(&str, &str)],
tls_mode: TlsMode,
tls_config: &TlsConfig,
) -> Result<Self, PgWireError>
pub async fn connect_with_tls_config( addr: &str, user: &str, password: &str, database: &str, startup_params: &[(&str, &str)], tls_mode: TlsMode, tls_config: &TlsConfig, ) -> Result<Self, PgWireError>
Connect with startup parameters, an explicit TLS mode, and a custom TLS configuration (custom trust roots and/or a client certificate).
Only available when the tls feature is enabled.
Sourcepub async fn send_raw(&mut self, buf: &[u8]) -> Result<(), PgWireError>
pub async fn send_raw(&mut self, buf: &[u8]) -> Result<(), PgWireError>
Send a raw buffer to the server (one write syscall).
Sourcepub async fn recv_msg(&mut self) -> Result<BackendMsg, PgWireError>
pub async fn recv_msg(&mut self) -> Result<BackendMsg, PgWireError>
Read one complete backend message from the connection. Uses an internal buffer to minimize read() syscalls.
Sourcepub async fn collect_rows(
&mut self,
) -> Result<(Vec<RawRow>, String), PgWireError>
pub async fn collect_rows( &mut self, ) -> Result<(Vec<RawRow>, String), PgWireError>
Receive messages until ReadyForQuery, collecting DataRows. Returns (rows, command_tag).
Sourcepub async fn describe_statement(
&mut self,
sql: &str,
) -> Result<(Vec<u32>, Vec<FieldDescription>), PgWireError>
pub async fn describe_statement( &mut self, sql: &str, ) -> Result<(Vec<u32>, Vec<FieldDescription>), PgWireError>
Describe a SQL statement: sends Parse + Describe Statement + Sync, returns (parameter type OIDs, column field descriptions). Used by compile-time query checking macros.
Sourcepub async fn drain_until_ready(&mut self) -> Result<(), PgWireError>
pub async fn drain_until_ready(&mut self) -> Result<(), PgWireError>
Drain messages until ReadyForQuery (error recovery). Also attempts to parse any remaining data in the receive buffer before declaring the connection closed.