A pure Go PostgreSQL server wire protocol implementation for building custom PostgreSQL-compatible servers.
PSQL Wire is a pure Go implementation of the PostgreSQL wire protocol, enabling developers to build custom PostgreSQL-compatible servers with minimal code. It provides a high-level, hackable foundation for creating custom database servers, PSQL honeypots, driver testing tools, or third-party integrations.
Go developers who need to build custom PostgreSQL-compatible servers, such as those creating honeypots, testing PostgreSQL drivers, or integrating third-party systems with the PostgreSQL protocol.
Developers choose PSQL Wire for its pure Go implementation with no external dependencies, rapid server setup in a few lines of code, and high-level API with features like prepared statements and session attributes for custom state tracking.
PostgreSQL server wire protocol. Build your own server and start serving connections.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Has no external dependencies, making it easy to integrate into Go projects and deploy, as highlighted in the README's feature list.
Allows building a PostgreSQL-compatible server in a few lines of code, demonstrated by the minimal example in the README.
Provides session attributes to store custom state per connection, useful for tracking metadata like tenant IDs, as shown in the code snippets.
Offers prepared statements and data writer interfaces, simplifying the implementation of custom logic without low-level protocol handling.
The README explicitly warns it lacks a PSQL parser, requiring integration with external projects for SQL query parsing and execution.
Only implements the wire protocol, so developers must build the entire SQL execution engine, transaction management, and storage layer themselves.
For protocol inspection, it relies on third-party tools like psql-proxy, adding complexity to the debugging workflow.
Primarily targets custom servers and honeypots, so it may lack community support, extensive documentation, or features for general-purpose database needs.