diff --git a/src/bin/enqueue-job.rs b/src/bin/enqueue-job.rs index 876b9d1c5a9..42a59d41b28 100644 --- a/src/bin/enqueue-job.rs +++ b/src/bin/enqueue-job.rs @@ -13,7 +13,7 @@ fn main() -> Result<(), Error> { match &*job { "update_downloads" => Ok(tasks::update_downloads().enqueue(&conn)?), "dump_db" => { - let database_url = args.next().unwrap_or_else(|| env("DATABASE_URL")); + let database_url = args.next().unwrap_or_else(|| env("READ_ONLY_REPLICA_URL")); let target_name = args .next() .unwrap_or_else(|| String::from("db-dump.tar.gz")); diff --git a/src/tasks/dump_db/dump-export.sql.hbs b/src/tasks/dump_db/dump-export.sql.hbs index 0fcf38cba4d..99952df6939 100644 --- a/src/tasks/dump_db/dump-export.sql.hbs +++ b/src/tasks/dump_db/dump-export.sql.hbs @@ -1,19 +1,7 @@ -BEGIN; +BEGIN ISOLATION LEVEL REPEATABLE READ, READ ONLY; {{~#each tables}} {{~#if this.filter}} - CREATE TEMPORARY VIEW "dump_db_{{this.name}}" AS ( - SELECT {{this.columns}} - FROM "{{this.name}}" - WHERE {{this.filter}} - ); -{{~/if}} -{{~/each}} -COMMIT; - -BEGIN ISOLATION LEVEL SERIALIZABLE READ ONLY DEFERRABLE; -{{~#each tables}} -{{~#if this.filter}} - \copy (SELECT * FROM "dump_db_{{this.name}}") TO 'data/{{this.name}}.csv' WITH CSV HEADER + \copy (SELECT {{this.columns}} FROM "{{this.name}}" WHERE {{this.filter}}) TO 'data/{{this.name}}.csv' WITH CSV HEADER {{~else}} \copy "{{this.name}}" ({{this.columns}}) TO 'data/{{this.name}}.csv' WITH CSV HEADER {{~/if}} diff --git a/src/tasks/dump_db/gen_scripts.rs b/src/tasks/dump_db/gen_scripts.rs index e128a0165cd..394b1192280 100644 --- a/src/tasks/dump_db/gen_scripts.rs +++ b/src/tasks/dump_db/gen_scripts.rs @@ -42,7 +42,7 @@ struct TableConfig { #[derive(Debug, Serialize)] struct HandlebarsTableContext<'a> { name: &'a str, - filter: Option<&'a str>, + filter: Option, columns: String, column_defaults: BTreeMap<&'a str, &'a str>, } @@ -59,7 +59,7 @@ impl TableConfig { if columns.is_empty() { None } else { - let filter = self.filter.as_ref().map(String::as_str); + let filter = self.filter.as_ref().map(|s| s.replace('\n', " ")); let column_defaults = self .column_defaults .iter()