Include various database PRAGMA values in dump
Sample output on Cuttlefish:
Database configuration:
auto_vacuum = 1
journal_mode = delete
journal_size_limit = 1048576
synchronous = 2
schema_version = 15
user_version = 0
Test: dumpsys android.security.maintenance
Change-Id: Iad4698d754728c5f30955ad503f446958cbdeec4
diff --git a/keystore2/src/maintenance.rs b/keystore2/src/maintenance.rs
index 1a5045e..7b44ad7 100644
--- a/keystore2/src/maintenance.rs
+++ b/keystore2/src/maintenance.rs
@@ -351,6 +351,34 @@
}
writeln!(f)?;
+ // Display database config information.
+ writeln!(f, "Database configuration:")?;
+ DB.with(|db| -> std::io::Result<()> {
+ let pragma_str = |f: &mut dyn std::io::Write, name| -> std::io::Result<()> {
+ let mut db = db.borrow_mut();
+ let value: String = db
+ .pragma(name)
+ .unwrap_or_else(|e| format!("unknown value for '{name}', failed: {e:?}"));
+ writeln!(f, " {name} = {value}")
+ };
+ let pragma_i32 = |f: &mut dyn std::io::Write, name| -> std::io::Result<()> {
+ let mut db = db.borrow_mut();
+ let value: i32 = db.pragma(name).unwrap_or_else(|e| {
+ log::error!("unknown value for '{name}', failed: {e:?}");
+ -1
+ });
+ writeln!(f, " {name} = {value}")
+ };
+ pragma_i32(f, "auto_vacuum")?;
+ pragma_str(f, "journal_mode")?;
+ pragma_i32(f, "journal_size_limit")?;
+ pragma_i32(f, "synchronous")?;
+ pragma_i32(f, "schema_version")?;
+ pragma_i32(f, "user_version")?;
+ Ok(())
+ })?;
+ writeln!(f)?;
+
// Display accumulated metrics.
writeln!(f, "Metrics information:")?;
writeln!(f)?;