Skip to content

Commit 1ddc774

Browse files
gautamg795Convex, Inc.
authored and
Convex, Inc.
committed
change big brain to use postgres schemas (#37710)
GitOrigin-RevId: bfb8d89ed7a43d110433b5da975229e4465a4567
1 parent 07f1df8 commit 1ddc774

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

crates/clusters/src/db_driver_tag.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use common::types::PersistenceVersion;
77
pub enum DbDriverTag {
88
Sqlite,
99
Postgres(PersistenceVersion),
10+
PostgresMultiSchema(PersistenceVersion),
1011
PostgresAwsIam(PersistenceVersion),
1112
MySql(PersistenceVersion),
1213
MySqlAwsIam(PersistenceVersion),
@@ -21,6 +22,7 @@ impl clap::ValueEnum for DbDriverTag {
2122
DbDriverTag::MySql(PersistenceVersion::V5),
2223
DbDriverTag::MySqlAwsIam(PersistenceVersion::V5),
2324
DbDriverTag::Postgres(PersistenceVersion::V5),
25+
DbDriverTag::PostgresMultiSchema(PersistenceVersion::V5),
2426
DbDriverTag::PostgresAwsIam(PersistenceVersion::V5),
2527
#[cfg(any(test, feature = "testing"))]
2628
DbDriverTag::TestPersistence,
@@ -36,6 +38,7 @@ impl DbDriverTag {
3638
pub fn persistence_version(&self) -> anyhow::Result<PersistenceVersion> {
3739
match self {
3840
Self::Postgres(version)
41+
| Self::PostgresMultiSchema(version)
3942
| Self::PostgresAwsIam(version)
4043
| Self::MySql(version)
4144
| Self::MySqlAwsIam(version) => Ok(*version),
@@ -53,6 +56,7 @@ impl DbDriverTag {
5356
match self {
5457
DbDriverTag::Sqlite => "sqlite",
5558
DbDriverTag::Postgres(PersistenceVersion::V5) => "postgres-v5",
59+
DbDriverTag::PostgresMultiSchema(PersistenceVersion::V5) => "postgres-v5-multi-schema",
5660
DbDriverTag::PostgresAwsIam(PersistenceVersion::V5) => "postgres-v5-aws-iam",
5761
DbDriverTag::MySql(PersistenceVersion::V5) => "mysql-v5",
5862
DbDriverTag::MySqlAwsIam(PersistenceVersion::V5) => "mysql-v5-aws-iam",
@@ -69,6 +73,9 @@ impl FromStr for DbDriverTag {
6973
match s {
7074
"sqlite" => Ok(Self::Sqlite),
7175
"postgres-v5" => Ok(DbDriverTag::Postgres(PersistenceVersion::V5)),
76+
"postgres-v5-multi-schema" => {
77+
Ok(DbDriverTag::PostgresMultiSchema(PersistenceVersion::V5))
78+
},
7279
"postgres-v5-aws-iam" => Ok(DbDriverTag::PostgresAwsIam(PersistenceVersion::V5)),
7380
"mysql-v5" => Ok(DbDriverTag::MySql(PersistenceVersion::V5)),
7481
"mysql-v5-aws-iam" => Ok(DbDriverTag::MySqlAwsIam(PersistenceVersion::V5)),

crates/clusters/src/lib.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,10 @@ pub fn persistence_args_from_cluster_url(
3333
"cluster url username must be set",
3434
);
3535
match driver {
36-
DbDriverTag::Postgres(_) | DbDriverTag::PostgresAwsIam(_) => {
37-
// NOTE: for PostgresAwsIam we do not set any database so we can
38-
// reuse connections between databases
39-
let schema = if matches!(driver, DbDriverTag::PostgresAwsIam(_)) {
40-
// N.B.: unlike mysql we use the instance name as-is as a schema
41-
// name (we don't change - to _)
42-
Some(instance_name.to_string())
43-
} else {
36+
DbDriverTag::Postgres(_)
37+
| DbDriverTag::PostgresMultiSchema(_)
38+
| DbDriverTag::PostgresAwsIam(_) => {
39+
let schema = if matches!(driver, DbDriverTag::Postgres(_)) {
4440
// selfhosted case
4541
let db_name = instance_name.replace('-', "_");
4642
anyhow::ensure!(
@@ -50,6 +46,11 @@ pub fn persistence_args_from_cluster_url(
5046
);
5147
cluster_url.set_path(&db_name);
5248
None
49+
} else {
50+
// NOTE: we do not set any database in this case
51+
// N.B.: unlike mysql we use the instance name as-is as a schema
52+
// name (we don't change - to _)
53+
Some(instance_name.to_string())
5354
};
5455
if require_ssl {
5556
cluster_url

crates/db_connection/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ pub async fn connect_persistence<RT: Runtime>(
4343
persistence
4444
},
4545
DbDriverTag::Postgres(version)
46+
| DbDriverTag::PostgresMultiSchema(version)
4647
| DbDriverTag::PostgresAwsIam(version)
4748
| DbDriverTag::MySql(version)
4849
| DbDriverTag::MySqlAwsIam(version) => {
@@ -111,6 +112,7 @@ pub async fn connect_persistence_reader<RT: Runtime>(
111112
let persistence: Arc<dyn PersistenceReader> = match db {
112113
DbDriverTag::Sqlite => Arc::new(SqlitePersistence::new(db_spec, false)?),
113114
DbDriverTag::Postgres(version)
115+
| DbDriverTag::PostgresMultiSchema(version)
114116
| DbDriverTag::PostgresAwsIam(version)
115117
| DbDriverTag::MySql(version)
116118
| DbDriverTag::MySqlAwsIam(version) => {

0 commit comments

Comments
 (0)