mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-06 13:02:55 +00:00
Our rust-postgres fork is getting messy. Mostly because proxy wants more
control over the raw protocol than tokio-postgres provides. As such,
it's diverging more and more. Storage and compute also make use of
rust-postgres, but in more normal usage, thus they don't need our crazy
changes.
Idea:
* proxy maintains their subset
* other teams use a minimal patch set against upstream rust-postgres
Reviewing this code will be difficult. To implement it, I
1. Copied tokio-postgres, postgres-protocol and postgres-types from
00940fcdb5
2. Updated their package names with the `2` suffix to make them compile
in the workspace.
3. Updated proxy to use those packages
4. Copied in the code from tokio-postgres-rustls 0.13 (with some patches
applied https://github.com/jbg/tokio-postgres-rustls/pull/32
https://github.com/jbg/tokio-postgres-rustls/pull/33)
5. Removed as much dead code as I could find in the vendored libraries
6. Updated the tokio-postgres-rustls code to use our existing channel
binding implementation
121 lines
3.6 KiB
TOML
121 lines
3.6 KiB
TOML
[package]
|
|
name = "proxy"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[features]
|
|
default = []
|
|
testing = []
|
|
|
|
[dependencies]
|
|
ahash.workspace = true
|
|
anyhow.workspace = true
|
|
arc-swap.workspace = true
|
|
async-compression.workspace = true
|
|
async-trait.workspace = true
|
|
atomic-take.workspace = true
|
|
aws-config.workspace = true
|
|
aws-sdk-iam.workspace = true
|
|
aws-sigv4.workspace = true
|
|
base64.workspace = true
|
|
bstr.workspace = true
|
|
bytes = { workspace = true, features = ["serde"] }
|
|
camino.workspace = true
|
|
chrono.workspace = true
|
|
clap = { workspace = true, features = ["derive", "env"] }
|
|
compute_api.workspace = true
|
|
consumption_metrics.workspace = true
|
|
dashmap.workspace = true
|
|
env_logger.workspace = true
|
|
framed-websockets.workspace = true
|
|
futures.workspace = true
|
|
hashbrown.workspace = true
|
|
hashlink.workspace = true
|
|
hex.workspace = true
|
|
hmac.workspace = true
|
|
hostname.workspace = true
|
|
http.workspace = true
|
|
humantime.workspace = true
|
|
humantime-serde.workspace = true
|
|
hyper0.workspace = true
|
|
hyper = { workspace = true, features = ["server", "http1", "http2"] }
|
|
hyper-util = { version = "0.1", features = ["server", "http1", "http2", "tokio"] }
|
|
http-body-util = { version = "0.1" }
|
|
indexmap = { workspace = true, features = ["serde"] }
|
|
ipnet.workspace = true
|
|
itertools.workspace = true
|
|
itoa.workspace = true
|
|
lasso = { workspace = true, features = ["multi-threaded"] }
|
|
measured = { workspace = true, features = ["lasso"] }
|
|
metrics.workspace = true
|
|
once_cell.workspace = true
|
|
parking_lot.workspace = true
|
|
parquet.workspace = true
|
|
parquet_derive.workspace = true
|
|
pin-project-lite.workspace = true
|
|
postgres_backend.workspace = true
|
|
postgres-protocol = { package = "postgres-protocol2", path = "../libs/proxy/postgres-protocol2" }
|
|
pq_proto.workspace = true
|
|
prometheus.workspace = true
|
|
rand.workspace = true
|
|
regex.workspace = true
|
|
remote_storage = { version = "0.1", path = "../libs/remote_storage/" }
|
|
reqwest = { workspace = true, features = ["rustls-tls-native-roots"] }
|
|
reqwest-middleware = { workspace = true, features = ["json"] }
|
|
reqwest-retry.workspace = true
|
|
reqwest-tracing.workspace = true
|
|
rustc-hash.workspace = true
|
|
rustls-pemfile.workspace = true
|
|
rustls.workspace = true
|
|
scopeguard.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sha2 = { workspace = true, features = ["asm", "oid"] }
|
|
smol_str.workspace = true
|
|
smallvec.workspace = true
|
|
socket2.workspace = true
|
|
strum.workspace = true
|
|
strum_macros.workspace = true
|
|
subtle.workspace = true
|
|
thiserror.workspace = true
|
|
tikv-jemallocator.workspace = true
|
|
tikv-jemalloc-ctl = { workspace = true, features = ["use_std"] }
|
|
tokio-postgres = { package = "tokio-postgres2", path = "../libs/proxy/tokio-postgres2" }
|
|
tokio-rustls.workspace = true
|
|
tokio-util.workspace = true
|
|
tokio = { workspace = true, features = ["signal"] }
|
|
tracing-subscriber.workspace = true
|
|
tracing-utils.workspace = true
|
|
tracing.workspace = true
|
|
try-lock.workspace = true
|
|
typed-json.workspace = true
|
|
url.workspace = true
|
|
urlencoding.workspace = true
|
|
utils.workspace = true
|
|
uuid.workspace = true
|
|
rustls-native-certs.workspace = true
|
|
x509-parser.workspace = true
|
|
redis.workspace = true
|
|
zerocopy.workspace = true
|
|
|
|
# jwt stuff
|
|
jose-jwa = "0.1.2"
|
|
jose-jwk = { version = "0.1.2", features = ["p256", "p384", "rsa"] }
|
|
signature = "2"
|
|
ecdsa = "0.16"
|
|
p256 = { version = "0.13", features = ["jwk"] }
|
|
rsa = "0.9"
|
|
|
|
workspace_hack.workspace = true
|
|
|
|
[dev-dependencies]
|
|
camino-tempfile.workspace = true
|
|
fallible-iterator.workspace = true
|
|
tokio-tungstenite.workspace = true
|
|
pbkdf2 = { workspace = true, features = ["simple", "std"] }
|
|
rcgen.workspace = true
|
|
rstest.workspace = true
|
|
walkdir.workspace = true
|
|
rand_distr = "0.4"
|