use spg_engine::{Engine, QueryResult};
fn row_of(e: &mut Engine, sql: &str) -> Vec<String> {
match e.execute(sql).unwrap() {
QueryResult::Rows { rows, .. } => rows[0]
.values
.iter()
.map(spg_engine::eval::value_to_text)
.collect(),
other => panic!("{sql}: {other:?}"),
}
}
#[test]
fn backend_pid_embedded_fallback() {
let mut e = Engine::new();
assert_eq!(
row_of(
&mut e,
"SELECT pg_backend_pid(), pg_backend_pid() = pg_backend_pid()"
),
vec!["1", "true"]
);
}
#[test]
fn stat_database_full_column_set() {
let mut e = Engine::new();
assert_eq!(
row_of(
&mut e,
"SELECT conflicts, temp_files, temp_bytes, deadlocks, checksum_failures, \
checksum_last_failure, sessions, sessions_killed, \
parallel_workers_launched, stats_reset \
FROM pg_stat_database WHERE datname = current_database()"
),
vec!["0", "0", "0", "0", "0", "NULL", "0", "0", "0", "NULL"]
);
assert_eq!(
row_of(
&mut e,
"SELECT xact_commit >= 0, blks_read >= 0, session_time = 0.0 \
FROM pg_stat_database WHERE datname = current_database()"
),
vec!["true", "true", "true"]
);
}