Merge branch 'master' into new-schema

This commit is contained in:
Scott Lamb 2019-07-10 01:11:25 -07:00
commit 8159acf703
2 changed files with 8 additions and 0 deletions

View File

@ -1824,6 +1824,8 @@ impl LockedDatabase {
/// test code. /// test code.
pub fn init(conn: &mut rusqlite::Connection) -> Result<(), Error> { pub fn init(conn: &mut rusqlite::Connection) -> Result<(), Error> {
conn.execute("pragma foreign_keys = on", &[] as &[&dyn ToSql])?; conn.execute("pragma foreign_keys = on", &[] as &[&dyn ToSql])?;
conn.execute("pragma fullfsync = on", &[] as &[&dyn ToSql])?;
conn.execute("pragma synchronous = 2", &[] as &[&dyn ToSql])?;
let tx = conn.transaction()?; let tx = conn.transaction()?;
tx.execute_batch(include_str!("schema.sql"))?; tx.execute_batch(include_str!("schema.sql"))?;
{ {
@ -1885,6 +1887,8 @@ impl<C: Clocks + Clone> Database<C> {
pub fn new(clocks: C, conn: rusqlite::Connection, pub fn new(clocks: C, conn: rusqlite::Connection,
read_write: bool) -> Result<Database<C>, Error> { read_write: bool) -> Result<Database<C>, Error> {
conn.execute("pragma foreign_keys = on", &[] as &[&dyn ToSql])?; conn.execute("pragma foreign_keys = on", &[] as &[&dyn ToSql])?;
conn.execute("pragma fullfsync = on", &[] as &[&dyn ToSql])?;
conn.execute("pragma synchronous = 2", &[] as &[&dyn ToSql])?;
{ {
let ver = get_schema_version(&conn)?.ok_or_else(|| format_err!( let ver = get_schema_version(&conn)?.ok_or_else(|| format_err!(
"no such table: version. \ "no such table: version. \

View File

@ -101,6 +101,10 @@ pub fn run(args: &Args, conn: &mut rusqlite::Connection) -> Result<(), Error> {
// be careful about the order of operations during the upgrade. // be careful about the order of operations during the upgrade.
conn.execute("pragma foreign_keys = on", &[] as &[&dyn ToSql])?; conn.execute("pragma foreign_keys = on", &[] as &[&dyn ToSql])?;
// Make the database actually durable.
conn.execute("pragma fullfsync = on", &[] as &[&dyn ToSql])?;
conn.execute("pragma synchronous = 2", &[] as &[&dyn ToSql])?;
// WAL is the preferred journal mode for normal operation; it reduces the number of syncs // WAL is the preferred journal mode for normal operation; it reduces the number of syncs
// without compromising safety. // without compromising safety.
set_journal_mode(&conn, "wal").unwrap(); set_journal_mode(&conn, "wal").unwrap();