mirror of
https://github.com/isar/rusqlite.git
synced 2025-08-19 12:29:34 +08:00
Merge remote-tracking branch 'origin/master' into owning
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
//! Ensure loadable_extension.rs works.
|
||||
//! Ensure `loadable_extension.rs` works.
|
||||
|
||||
use rusqlite::{Connection, Result};
|
||||
use std::env::consts::{DLL_PREFIX, DLL_SUFFIX};
|
||||
@@ -9,10 +9,7 @@ fn main() -> Result<()> {
|
||||
unsafe {
|
||||
db.load_extension_enable()?;
|
||||
db.load_extension(
|
||||
format!(
|
||||
"target/debug/examples/{}loadable_extension{}",
|
||||
DLL_PREFIX, DLL_SUFFIX
|
||||
),
|
||||
format!("target/debug/examples/{DLL_PREFIX}loadable_extension{DLL_SUFFIX}"),
|
||||
None,
|
||||
)?;
|
||||
db.load_extension_disable()?;
|
||||
|
@@ -4,7 +4,7 @@ use std::os::raw::{c_char, c_int};
|
||||
use rusqlite::ffi;
|
||||
use rusqlite::functions::FunctionFlags;
|
||||
use rusqlite::types::{ToSqlOutput, Value};
|
||||
use rusqlite::{to_sqlite_error, Connection, Result};
|
||||
use rusqlite::{Connection, Result};
|
||||
|
||||
/// # build
|
||||
/// ```sh
|
||||
@@ -20,21 +20,15 @@ use rusqlite::{to_sqlite_error, Connection, Result};
|
||||
/// ```
|
||||
#[allow(clippy::not_unsafe_ptr_arg_deref)]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn sqlite3_extension_init(
|
||||
pub unsafe extern "C" fn sqlite3_extension_init(
|
||||
db: *mut ffi::sqlite3,
|
||||
pz_err_msg: *mut *mut c_char,
|
||||
p_api: *mut ffi::sqlite3_api_routines,
|
||||
) -> c_int {
|
||||
if p_api.is_null() {
|
||||
return ffi::SQLITE_ERROR;
|
||||
} else if let Err(err) = extension_init(db, p_api) {
|
||||
return unsafe { to_sqlite_error(&err, pz_err_msg) };
|
||||
}
|
||||
ffi::SQLITE_OK
|
||||
Connection::extension_init2(db, pz_err_msg, p_api, extension_init)
|
||||
}
|
||||
|
||||
fn extension_init(db: *mut ffi::sqlite3, p_api: *mut ffi::sqlite3_api_routines) -> Result<()> {
|
||||
let db = unsafe { Connection::extension_init2(db, p_api)? };
|
||||
fn extension_init(db: Connection) -> Result<bool> {
|
||||
db.create_scalar_function(
|
||||
"rusqlite_test_function",
|
||||
0,
|
||||
@@ -46,5 +40,5 @@ fn extension_init(db: *mut ffi::sqlite3, p_api: *mut ffi::sqlite3_api_routines)
|
||||
},
|
||||
)?;
|
||||
rusqlite::trace::log(ffi::SQLITE_WARNING, "Rusqlite extension initialized");
|
||||
Ok(())
|
||||
Ok(false)
|
||||
}
|
||||
|
Reference in New Issue
Block a user