mirror of
				https://github.com/isar/rusqlite.git
				synced 2025-10-31 22:08:55 +08:00 
			
		
		
		
	Introduce to_sqlite_error
643c0f699f
One small step to support creating loadable extensionThis commit is contained in:
		| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user