use spg_engine::{Engine, QueryResult};
fn ok(eng: &mut Engine, sql: &str) {
let r = eng
.execute(sql)
.unwrap_or_else(|e| panic!("{sql:?}: {e:?}"));
assert!(
matches!(r, QueryResult::CommandOk { affected: 0, .. }),
"{sql:?}"
);
}
#[test]
fn create_extension_simple() {
let mut eng = Engine::new();
ok(&mut eng, "CREATE EXTENSION vector");
}
#[test]
fn create_extension_if_not_exists() {
let mut eng = Engine::new();
ok(&mut eng, "CREATE EXTENSION IF NOT EXISTS vector");
}
#[test]
fn create_extension_with_schema() {
let mut eng = Engine::new();
ok(&mut eng, "CREATE EXTENSION pgcrypto WITH SCHEMA public");
}
#[test]
fn create_extension_with_cascade() {
let mut eng = Engine::new();
ok(&mut eng, "CREATE EXTENSION IF NOT EXISTS hstore CASCADE");
}
#[test]
fn create_extension_does_not_modify_catalog() {
let mut eng = Engine::new();
let r = eng.execute("CREATE EXTENSION vector").unwrap();
match r {
QueryResult::CommandOk {
modified_catalog, ..
} => {
assert!(!modified_catalog);
}
_ => panic!("expected CommandOk"),
}
}
#[test]
fn dual_target_dump_friendly() {
let mut eng = Engine::new();
ok(&mut eng, "CREATE EXTENSION IF NOT EXISTS vector");
ok(
&mut eng,
"CREATE TABLE docs (id INT NOT NULL, emb VECTOR(4) NOT NULL)",
);
}