use crate::util::*;
testcase!(test);
fn test(mut glue: multisql::Glue) {
execute!(glue, "CREATE TABLE TableA (id INTEGER);");
execute!(glue, "INSERT INTO TableA (id) VALUES (1);");
assert_error!(glue, "COMMIT;", multisql::ExecuteError::QueryNotSupported);
assert_error!(
glue,
"INSERT INTO Nothing VALUES (1);",
multisql::ExecuteError::TableNotExists
);
assert_error!(
glue,
"UPDATE Nothing SET a = 1;",
multisql::ExecuteError::TableNotExists
);
assert_error!(
glue,
"SELECT * FROM Nothing;",
multisql::FetchError::TableNotFound(String::from("Nothing"))
);
assert_error!(
glue,
"SELECT * FROM TableA JOIN (SELECT * FROM TableB) as TableC ON 1 = 1",
multisql::JoinError::UnimplementedTableType
);
assert_error!(
glue,
"SELECT * FROM TableA WHERE id = (SELECT id FROM TableA WHERE id = 2);",
multisql::ManualError::UnimplementedSubquery
);
assert_error!(
glue,
"SELECT * FROM TableA WHERE noname = 1;",
multisql::RecipeError::MissingColumn(vec![String::from("noname")])
);
assert_error!(
glue,
"INSERT INTO TableA (id2) VALUES (1);",
multisql::ValidateError::ColumnNotFound(String::from("id2"))
);
assert_error!(
glue,
"INSERT INTO TableA (id2, id) VALUES (100);",
multisql::ValidateError::ColumnNotFound(String::from("id2"))
);
assert_error!(
glue,
"INSERT INTO TableA VALUES (100), (100, 200);",
multisql::ValidateError::WrongNumberOfValues
);
assert_error!(
glue,
"SELECT * FROM TableA Where id = X'123';",
multisql::ValueError::UnimplementedLiteralType
);
}