Introduce to_sqlite_error

643c0f699f
One small step to support creating loadable extension
This commit is contained in:
gwenn
2023-06-08 20:01:17 +02:00
parent 38bf316601
commit 687aeef3b0
5 changed files with 36 additions and 33 deletions

View File

@@ -17,10 +17,11 @@ use std::ptr;
use std::slice;
use crate::context::set_result;
use crate::error::error_from_sqlite_code;
use crate::error::{error_from_sqlite_code, to_sqlite_error};
use crate::ffi;
pub use crate::ffi::{sqlite3_vtab, sqlite3_vtab_cursor};
use crate::types::{FromSql, FromSqlError, ToSql, ValueRef};
use crate::util::alloc;
use crate::{str_to_cstring, Connection, Error, InnerConnection, Result};
// let conn: Connection = ...;
@@ -964,8 +965,7 @@ where
ffi::SQLITE_OK
} else {
let err = error_from_sqlite_code(rc, None);
*err_msg = alloc(&err.to_string());
rc
to_sqlite_error(&err, err_msg)
}
}
Err(err) => {
@@ -973,16 +973,7 @@ where
ffi::SQLITE_ERROR
}
},
Err(Error::SqliteFailure(err, s)) => {
if let Some(s) = s {
*err_msg = alloc(&s);
}
err.extended_code
}
Err(err) => {
*err_msg = alloc(&err.to_string());
ffi::SQLITE_ERROR
}
Err(err) => to_sqlite_error(&err, err_msg),
}
}
@@ -1016,8 +1007,7 @@ where
ffi::SQLITE_OK
} else {
let err = error_from_sqlite_code(rc, None);
*err_msg = alloc(&err.to_string());
rc
to_sqlite_error(&err, err_msg)
}
}
Err(err) => {
@@ -1025,16 +1015,7 @@ where
ffi::SQLITE_ERROR
}
},
Err(Error::SqliteFailure(err, s)) => {
if let Some(s) = s {
*err_msg = alloc(&s);
}
err.extended_code
}
Err(err) => {
*err_msg = alloc(&err.to_string());
ffi::SQLITE_ERROR
}
Err(err) => to_sqlite_error(&err, err_msg),
}
}
@@ -1311,12 +1292,6 @@ unsafe fn result_error<T>(ctx: *mut ffi::sqlite3_context, result: Result<T>) ->
}
}
// Space to hold this string must be obtained
// from an SQLite memory allocation function
fn alloc(s: &str) -> *mut c_char {
crate::util::SqliteMallocString::from_str(s).into_raw()
}
#[cfg(feature = "array")]
#[cfg_attr(docsrs, doc(cfg(feature = "array")))]
pub mod array;