use spg_engine::{Engine, QueryResult};
fn text(e: &mut Engine, sql: &str) -> String {
match e.execute(sql).unwrap() {
QueryResult::Rows { rows, .. } => match &rows[0].values[0] {
spg_storage::Value::Text(s) => s.to_string(),
v => format!("{v:?}"),
},
_ => panic!("expected rows"),
}
}
#[test]
fn numeric_array_coerces_into_float8_array() {
let mut e = Engine::new();
assert_eq!(
text(
&mut e,
"SELECT (ARRAY[2.25::numeric, 3.5::numeric]::float8[])::text"
),
"{2.25,3.5}"
);
e.execute("CREATE TABLE fa (xs float8[])").unwrap();
e.execute("INSERT INTO fa VALUES (ARRAY[2.25::numeric, 3.5::numeric])")
.unwrap();
assert_eq!(text(&mut e, "SELECT xs::text FROM fa"), "{2.25,3.5}");
e.execute("CREATE TABLE fb (xs float8[])").unwrap();
e.execute("INSERT INTO fb VALUES (ARRAY[1::numeric, 2::numeric])")
.unwrap();
assert_eq!(text(&mut e, "SELECT xs::text FROM fb"), "{1,2}");
}