- Notifications
You must be signed in to change notification settings - Fork0
🐘 PostgreSQL driver in Go using only the standard library
License
NotificationsYou must be signed in to change notification settings
ViniciusCestarii/postgres-protocol-go
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This project implements the PostgreSQL wire protocol in Go using only the standard library.
funcmain() {connStr:="postgres://postgres:123456@localhost:5432/postgres"driveConfig:= models.DriveConfig{Verbose:true,}pgConnection,err:=protocol.NewPgConnection(connStr,driveConfig)iferr!=nil {fmt.Println(err)return}userToFind:="postgres"res,err:=pgConnection.Query("SELECT * FROM pg_user WHERE usename = $1;",userToFind)iferr!=nil {fmt.Println(err)pgConnection.Close()return}fmt.Println("Postgres user: ",res.Rows)pgConnection.Close()}
- Flexible Connection Handling
- Supports both URL-style connection strings (postgres://user:pass@host:port/db)
- Supports key-value connection strings (
host=localhost port=5432)
- SSL/TLS Support
- Automatic SSL/TLS negotiation when
sslmode=require - Secure encrypted connections
- Automatic SSL/TLS negotiation when
- Query Interface
- Simple query protocol support
- Extended query protocol with parameter binding
- Support for parameterized queries using $1, $2 etc.
- Connection Configuration
- Configurable verbose mode for debugging
- Custom drive configuration options via models.DriveConfig
- Authentication
- SCRAM-SHA-256
- md5
- clear text
- Clean Resource Management
- Proper connection termination
Clone the repository:
git clone https://github.com/ViniciusCestarii/postgres-protocol-go.git
Create environment file:
cp .env.example .env
Set the environment variables in the
.envfile.Run the client implementation:
go run cmd/client.go
postgres-protocol-go/│── cmd/│ ├── client.go# Client implementation example using this driver│── internal/│ ├── pool/# Buff writer│ ├── protocol/# PostgreSQL wire protocol handling│── pkg/│ ├── utils/# Shared utilities (logging, errors, helpers)│ ├── models/# Data structures for queries, results, etc.│── tests/# Integration and unit tests│── go.mod# Go module file│── README.md# Project documentation
To run the tests, use the following commands:
gotest ./tests/...Official Protocol Documentation
This project is licensed under the MIT License - see theLICENSE file for details.
About
🐘 PostgreSQL driver in Go using only the standard library
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published