Compare commits

..

2 Commits

Author SHA1 Message Date
Vita Tauer
c0ae53484f Fixed linter errors 2024-11-11 12:09:19 +01:00
Vita Tauer
a1690a76c5 Add 'Fail' mode when no shard selected 2024-11-11 12:04:15 +01:00
8 changed files with 22 additions and 12 deletions

18
Cargo.lock generated
View File

@@ -1341,7 +1341,7 @@ checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36"
dependencies = [
"log",
"ring",
"rustls-webpki",
"rustls-webpki 0.101.1",
"sct",
]
@@ -1355,10 +1355,14 @@ dependencies = [
]
[[package]]
name = "rustls-pki-types"
version = "1.10.0"
name = "rustls-webpki"
version = "0.100.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab"
dependencies = [
"ring",
"untrusted",
]
[[package]]
name = "rustls-webpki"
@@ -2034,11 +2038,11 @@ dependencies = [
[[package]]
name = "webpki-roots"
version = "0.26.7"
version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e"
checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338"
dependencies = [
"rustls-pki-types",
"rustls-webpki 0.100.2",
]
[[package]]

View File

@@ -41,7 +41,7 @@ atomic_enum = "0.2.0"
postgres-protocol = "0.6.5"
fallible-iterator = "0.2"
pin-project = "1"
webpki-roots = "0.26"
webpki-roots = "0.23"
rustls = { version = "0.21", features = ["dangerous_configuration"] }
trust-dns-resolver = "0.22.0"
tokio-test = "0.4.2"

View File

@@ -231,7 +231,7 @@ User.find_by_email("test@example.com")
```sql
-- Grab a bunch of users from shard 1
SET SHARD TO '1';
SELECT * FROM users LIMIT 10;
SELECT * FROM users LIMT 10;
-- Find by id
SET SHARDING KEY TO '1234';

View File

@@ -2,7 +2,7 @@ apiVersion: v2
name: pgcat
description: A Helm chart for PgCat a PostgreSQL pooler and proxy (like PgBouncer) with support for sharding, load balancing, failover and mirroring.
maintainers:
- name: PostgresML
email: team@postgresml.org
- name: Wildcard
email: support@w6d.io
appVersion: "1.2.0"
version: 0.2.5
version: 0.2.4

View File

@@ -179,6 +179,7 @@ primary_reads_enabled = true
# `random`: picks a shard at random
# `random_healthy`: picks a shard at random favoring shards with the least number of recent errors
# `shard_<number>`: e.g. shard_0, shard_4, etc. picks a specific shard, everytime
# `fail`: fails to pick up shard. (require explicit shard setup)
# default_shard = "shard_0"
# So what if you wanted to implement a different hashing function,

View File

@@ -773,6 +773,7 @@ pub enum DefaultShard {
Shard(usize),
Random,
RandomHealthy,
Fail,
}
impl Default for DefaultShard {
fn default() -> Self {
@@ -787,6 +788,7 @@ impl serde::Serialize for DefaultShard {
}
DefaultShard::Random => serializer.serialize_str("random"),
DefaultShard::RandomHealthy => serializer.serialize_str("random_healthy"),
DefaultShard::Fail => serializer.serialize_str("fail"),
}
}
}
@@ -804,6 +806,7 @@ impl<'de> serde::Deserialize<'de> for DefaultShard {
match s.as_str() {
"random" => Ok(DefaultShard::Random),
"random_healthy" => Ok(DefaultShard::RandomHealthy),
"fail" => Ok(DefaultShard::Fail),
_ => Err(serde::de::Error::custom(
"invalid value for no_shard_specified_behavior",
)),

View File

@@ -30,6 +30,7 @@ pub enum Error {
QueryRouterError(String),
InvalidShardId(usize),
PreparedStatementError,
NoShardSelected,
}
#[derive(Clone, PartialEq, Debug)]

View File

@@ -720,6 +720,7 @@ impl ConnectionPool {
.unwrap()
});
}
DefaultShard::Fail => return Err(Error::NoShardSelected),
},
};