This implements a client and a rich client for the Postgres protocol on Finagle.
This project has been archived since it was merged into finagle mainline. You can find it here. It is now being developed internally at Twitter, PRs and issues should be reported to the finagle repository directly.
There are at least 2 other PostgreSQL clients for Finagle: finagle-postgres and roc.
The roc
client is incomplete and seems unmaintained at this point.
The finagle-postgres
client is more complete, but also suffers from lack of maintenance love.
One main concern is the fact that it is still on the old style of using netty pipelines to implement protocols with Finagle.
Upgrading it to the new style would require rewriting a large portion, so it seemed equivalently risky to write a new one from scratch.
Furthermore, it opens the door to new features like properly implementing multi-line queries, implementing the COPY
protocol and cancellation.
Lastly, one original goal of this new client was to implement streaming (for result sets and multi-line queries).
- start-up
- Clear text password authentication
- MD5 password authentication
- SASL authentication
- simple query support
- multi-line simple query support
- COPY operations
- extended query support
- portal suspension / scanning
- function call
- TLS
- cancellation
- support cancelling infnite SQL queries
- non
Service
-based client (a.k.a: rich client), something like finagle-mysql - reusable prepared statements
- cache and close prepared statements
- transactions
- cursor
- error decoding and handling
- wire value decoding
- wire value encoding
- custom types