Expand description
PostgreSQL wire protocol compatibility layer (Phase 3.1 PG parity).
Exposes a minimal subset of the PG v3 protocol so psql, JDBC drivers
(pgjdbc), node-postgres, pgAdmin, DBeaver, and friends can connect to
RedDB as if it were PostgreSQL.
§Scope (Phase 3.1)
- Startup message negotiation (protocol version 3.0 / 196608).
- Authentication:
trustonly (no password). Clients that send an actual password are accepted — the password is ignored. - Simple query protocol (
Qframes): parse → execute → stream rows. - Extended query protocol (
Parse/Bind/Describe/Execute/Close/Sync), including prepared statements, portals,ParameterDescription, and row-limitedExecutewithPortalSuspended. - Minimal row description using a small OID mapping table.
- ReadyForQuery + CommandComplete + ErrorResponse framing.
- TLS:
SSLRequestis answered with'S'and the connection is upgraded via a rustls handshake when the listener carries TLS material, sharing the native wire’s cert/key config (PgWireConfig::tls). Without TLS materialSSLRequestis declined with'N'and the client continues in plaintext. A cleartext password is only challenged over an encrypted link or a loopback bind (seeauthenticate_startup).
Not in this phase (future 3.1.x):
- SASL / SCRAM auth, GSSAPI encryption.
- Function-call protocol.
- COPY protocol.
- NOTIFY / LISTEN.
Re-exports§
pub use protocol::BackendMessage;pub use protocol::FrontendMessage;pub use protocol::PgWireError;pub use server::start_pg_wire_listener;pub use server::PgWireConfig;pub use types::value_to_pg_wire_bytes;pub use types::PgOid;