# Encore PostgreSQL fork
This directory contains Encore's rust-postgres fork, imported from
`encoredev/rust-postgres` branch `encore-crates-io`, based on
`encore-patches-sync` commit `9b5966f4b6baba9e67422002f4540a99fb2af1da`,
including the package renames from that checkout.
Upstream authorship and MIT/Apache-2.0 licensing are preserved; see
`LICENSE-MIT`, `LICENSE-APACHE`, and `THIRD_PARTY`.
All packages are members of the repository's root Cargo workspace. There is no
separate nested workspace or lockfile. Upstream development packages, tests,
and database fixtures are retained; upstream CI and repository tooling are not.
`README.md` is the original upstream documentation.
The workspace aliases these local packages for Encore consumers:
- `postgres-protocol`: `encore-postgres-protocol`
- `tokio-postgres`: `encore-tokio-postgres`
- `postgres-native-tls`: `encore-postgres-native-tls`
The Rust library names remain unchanged. Consumers use `workspace = true`;
no PostgreSQL Git patches or sibling checkout are needed. The driver uses
crates.io `postgres-types` so integrations such as pgvector share its
`ToSql`/`FromSql` traits. The retained local `postgres-types` and other upstream
development packages are not used by the SDK.
## Development
The default workspace members preserve the repository's normal build/test
scope. Select the fork packages explicitly when working on them:
```sh
cargo check -p encore-postgres-protocol -p encore-tokio-postgres -p encore-postgres-native-tls --all-features
cargo test -p encore-postgres-protocol
```
Driver and TLS integration tests require PostgreSQL on port 5433 with the
roles and extensions in `docker/sql_setup.sh`. `docker-compose.yml` provides
that fixture. The inherited TLS certificate expired in June 2026; refresh it
in both the setup script and `test/server.crt` / `test/server.der` before TLS
tests. Tests do not start a database automatically.
Once the database fixtures are ready, run from the repository root:
```sh
cargo test -p encore-postgres-protocol -p encore-tokio-postgres -p encore-postgres-native-tls --all-features --lib --tests
```
Publishing automation is intentionally deferred to the coordinated Rust SDK
release work.