// the find
pgjdbc/r2dbc-postgresql
Postgresql R2DBC Driver
The official R2DBC driver for PostgreSQL, maintained under the pgjdbc org. It's meant to be used as the backing implementation for a client library (Spring Data R2DBC, jOOQ, etc.) rather than directly, and targets Java teams already committed to reactive database access.
Deep PostgreSQL-specific feature coverage beyond the generic R2DBC SPI: LISTEN/NOTIFY, logical decoding via replication slots, REFCURSOR support, and transaction definitions with isolation level and deferrable mode set in a single round-trip. The codec system is genuinely extensible — you can register custom Codec and CodecRegistrar implementations for types like Postgres enums without forking the driver. Failover support with targetServerType (primary/secondary) handles basic HA topologies without an external pooler. SCRAM channel binding has a require mode that fails the handshake instead of silently downgrading if the server doesn't support SCRAM-SHA-256-PLUS, which is the right default for anyone who cares about MITM resistance.
Multi-dimensional arrays are explicitly listed as not-yet-done in the README, and several common types (bit/bit varying, cidr, macaddr/macaddr8) are unsupported outright — if your schema uses network address types you're stuck casting through text. CITEXT requires manual casting or a custom StringCodec registration; it's not handled out of the box, which is an easy footgun for anyone migrating from JDBC where this just works. Cursored fetching has a documented incompatibility with newer pgpool versions that needs a non-default compatibilityMode flag to work around — worth knowing before you hit it in production. As with any R2DBC driver, you're adopting a reactive-only API surface; if the rest of your stack is blocking JDBC code, mixing them means running two connection pools and two mental models for the same database.