mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-23 17:05:36 +01:00
execute run on multiple parsed statements
This commit is contained in:
13
core/lib.rs
13
core/lib.rs
@@ -496,13 +496,12 @@ impl Connection {
|
||||
pub fn execute(self: &Arc<Connection>, sql: impl AsRef<str>) -> Result<()> {
|
||||
let sql = sql.as_ref();
|
||||
let mut parser = Parser::new(sql.as_bytes());
|
||||
let cmd = parser.next()?;
|
||||
let syms = self.syms.borrow();
|
||||
let byte_offset_end = parser.offset();
|
||||
let input = str::from_utf8(&sql.as_bytes()[..byte_offset_end])
|
||||
.unwrap()
|
||||
.trim();
|
||||
if let Some(cmd) = cmd {
|
||||
while let Some(cmd) = parser.next()? {
|
||||
let syms = self.syms.borrow();
|
||||
let byte_offset_end = parser.offset();
|
||||
let input = str::from_utf8(&sql.as_bytes()[..byte_offset_end])
|
||||
.unwrap()
|
||||
.trim();
|
||||
match cmd {
|
||||
Cmd::Explain(stmt) => {
|
||||
let program = translate::translate(
|
||||
|
||||
@@ -500,6 +500,23 @@ fn test_update_regression() -> anyhow::Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_multiple_statements() -> anyhow::Result<()> {
|
||||
let _ = env_logger::try_init();
|
||||
let tmp_db = TempDatabase::new_with_rusqlite("CREATE TABLE t(x)", false);
|
||||
let conn = tmp_db.connect_limbo();
|
||||
|
||||
conn.execute("INSERT INTO t values(1); insert into t values(2);")?;
|
||||
|
||||
run_query_on_row(&tmp_db, &conn, "SELECT count(1) from t;", |row| {
|
||||
let count = row.get::<i64>(0).unwrap();
|
||||
assert_eq!(count, 2);
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn check_integrity_is_ok(tmp_db: TempDatabase, conn: Arc<Connection>) -> Result<(), anyhow::Error> {
|
||||
run_query_on_row(&tmp_db, &conn, "pragma integrity_check", |row: &Row| {
|
||||
let res = row.get::<String>(0).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user