diff --git a/Cargo.toml b/Cargo.toml index ba25e63..fa5a457 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rusqlite" -version = "0.0.2" +version = "0.0.3" authors = ["John Gallagher "] description = "Ergonomic wrapper for SQLite" homepage = "https://github.com/jgallagher/rusqlite" diff --git a/Changelog.md b/Changelog.md index fde301c..44bd4a4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,8 @@ +# Version 0.0.3 (2014-12-23) + +* Updates to track latest rustc changes. +* Add call to `sqlite3_busy_timeout`. + # Version 0.0.2 (2014-12-04) * Remove use of now-deprecated `std::vec::raw::from_buf`. diff --git a/src/ffi/bindgen.rs b/src/ffi/bindgen.rs index 9d59042..a108568 100644 --- a/src/ffi/bindgen.rs +++ b/src/ffi/bindgen.rs @@ -1,5 +1,8 @@ +#![allow(raw_pointer_deriving)] +/* Running `target/bindgen /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sqlite3.h -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.0/include` */ /* automatically generated by rust-bindgen */ +#[deriving(Copy)] pub enum Struct_sqlite3 { } pub type sqlite3 = Struct_sqlite3; pub type sqlite_int64 = ::libc::c_longlong; @@ -14,11 +17,13 @@ pub type sqlite3_callback = -> ::libc::c_int>; pub type sqlite3_file = Struct_sqlite3_file; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_file { pub pMethods: *const Struct_sqlite3_io_methods, } pub type sqlite3_io_methods = Struct_sqlite3_io_methods; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_io_methods { pub iVersion: ::libc::c_int, pub xClose: ::std::option::Option ::libc::c_int>, pub xWrite: ::std::option::Option ::libc::c_int>, pub xTruncate: ::std::option::Option ::libc::c_int>, pub xSync: ::std::option::Option ::libc::c_int>, pub xFileSize: ::std::option::Option ::libc::c_int>, pub xLock: ::std::option::Option ::libc::c_int>, pub xFileControl: ::std::option::Option ::libc::c_int>, pub xSectorSize: ::std::option::Option ::libc::c_int>, pub xShmMap: ::std::option::Option ::libc::c_int>, pub xShmLock: ::std::option::Option ::libc::c_int>, pub xShmBarrier: ::std::option::Option, pub xShmUnmap: ::std::option::Option ::libc::c_int>, - pub xFetch: ::std::option::Option ::libc::c_int>, - pub xUnfetch: ::std::option::Option ::libc::c_int>, } +#[deriving(Copy)] pub enum Struct_sqlite3_mutex { } pub type sqlite3_mutex = Struct_sqlite3_mutex; pub type sqlite3_vfs = Struct_sqlite3_vfs; pub type sqlite3_syscall_ptr = ::std::option::Option; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_vfs { pub iVersion: ::libc::c_int, pub szOsFile: ::libc::c_int, @@ -118,54 +114,55 @@ pub struct Struct_sqlite3_vfs { pub pAppData: *mut ::libc::c_void, pub xOpen: ::std::option::Option ::libc::c_int>, pub xDelete: ::std::option::Option ::libc::c_int>, pub xAccess: ::std::option::Option ::libc::c_int>, pub xFullPathname: ::std::option::Option ::libc::c_int>, pub xDlOpen: ::std::option::Option *mut ::libc::c_void>, pub xDlError: ::std::option::Option, + nByte: ::libc::c_int, + zErrMsg: *mut ::libc::c_char)>, pub xDlSym: ::std::option::Option ::std::option::Option>, + ()>>, pub xDlClose: ::std::option::Option, pub xRandomness: ::std::option::Option ::libc::c_int>, pub xSleep: ::std::option::Option ::libc::c_int>, pub xCurrentTime: ::std::option::Option ::libc::c_int>, pub xSetSystemCall: ::std::option::Option ::libc::c_int>, pub xGetSystemCall: ::std::option::Option sqlite3_syscall_ptr>, pub xNextSystemCall: ::std::option::Option *const ::libc::c_char>, } pub type sqlite3_mem_methods = Struct_sqlite3_mem_methods; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_mem_methods { pub xMalloc: ::std::option::Option *mut ::libc::c_void>, @@ -219,10 +217,13 @@ pub struct Struct_sqlite3_mem_methods { (arg1: *mut ::libc::c_void)>, pub pAppData: *mut ::libc::c_void, } +#[deriving(Copy)] pub enum Struct_sqlite3_stmt { } pub type sqlite3_stmt = Struct_sqlite3_stmt; +#[deriving(Copy)] pub enum Struct_Mem { } pub type sqlite3_value = Struct_Mem; +#[deriving(Copy)] pub enum Struct_sqlite3_context { } pub type sqlite3_context = Struct_sqlite3_context; pub type sqlite3_destructor_type = @@ -232,48 +233,51 @@ pub type sqlite3_index_info = Struct_sqlite3_index_info; pub type sqlite3_vtab_cursor = Struct_sqlite3_vtab_cursor; pub type sqlite3_module = Struct_sqlite3_module; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_module { pub iVersion: ::libc::c_int, pub xCreate: ::std::option::Option ::libc::c_int>, pub xConnect: ::std::option::Option ::libc::c_int>, pub xBestIndex: ::std::option::Option ::libc::c_int>, pub xDisconnect: ::std::option::Option ::libc::c_int>, - pub xDestroy: ::std::option::Option ::libc::c_int>, pub xOpen: ::std::option::Option ::libc::c_int>, pub xClose: ::std::option::Option ::libc::c_int>, pub xFilter: ::std::option::Option ::libc::c_int>, pub xNext: ::std::option::Option ::libc::c_int>, pub xRowid: ::std::option::Option ::libc::c_int>, pub xUpdate: ::std::option::Option ::libc::c_int>, - pub xBegin: ::std::option::Option ::libc::c_int>, - pub xSync: ::std::option::Option ::libc::c_int>, - pub xCommit: ::std::option::Option ::libc::c_int>, pub xRollback: ::std::option::Option ::libc::c_int>, pub xFindFunction: ::std::option::Option, - arg5: + ppArg: *mut *mut ::libc::c_void) -> ::libc::c_int>, pub xRename: ::std::option::Option ::libc::c_int>, pub xSavepoint: ::std::option::Option ::libc::c_int>, pub xRelease: ::std::option::Option ::libc::c_int>, pub xRollbackTo: ::std::option::Option ::libc::c_int>, } #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_index_info { pub nConstraint: ::libc::c_int, pub aConstraint: *mut Struct_sqlite3_index_constraint, @@ -349,9 +355,9 @@ pub struct Struct_sqlite3_index_info { pub needToFreeIdxStr: ::libc::c_int, pub orderByConsumed: ::libc::c_int, pub estimatedCost: ::libc::c_double, - pub estimatedRows: sqlite3_int64, } #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_index_constraint { pub iColumn: ::libc::c_int, pub op: ::libc::c_uchar, @@ -359,29 +365,35 @@ pub struct Struct_sqlite3_index_constraint { pub iTermOffset: ::libc::c_int, } #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_index_orderby { pub iColumn: ::libc::c_int, pub desc: ::libc::c_uchar, } #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_index_constraint_usage { pub argvIndex: ::libc::c_int, pub omit: ::libc::c_uchar, } #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_vtab { pub pModule: *const sqlite3_module, pub nRef: ::libc::c_int, pub zErrMsg: *mut ::libc::c_char, } #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_vtab_cursor { pub pVtab: *mut sqlite3_vtab, } +#[deriving(Copy)] pub enum Struct_sqlite3_blob { } pub type sqlite3_blob = Struct_sqlite3_blob; pub type sqlite3_mutex_methods = Struct_sqlite3_mutex_methods; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_mutex_methods { pub xMutexInit: ::std::option::Option ::libc::c_int>, pub xMutexEnd: ::std::option::Option ::libc::c_int>, @@ -403,16 +415,19 @@ pub struct Struct_sqlite3_mutex_methods { (arg1: *mut sqlite3_mutex) -> ::libc::c_int>, } +#[deriving(Copy)] pub enum Struct_sqlite3_pcache { } pub type sqlite3_pcache = Struct_sqlite3_pcache; pub type sqlite3_pcache_page = Struct_sqlite3_pcache_page; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_pcache_page { pub pBuf: *mut ::libc::c_void, pub pExtra: *mut ::libc::c_void, } pub type sqlite3_pcache_methods2 = Struct_sqlite3_pcache_methods2; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_pcache_methods2 { pub iVersion: ::libc::c_int, pub pArg: *mut ::libc::c_void, @@ -421,33 +436,33 @@ pub struct Struct_sqlite3_pcache_methods2 { pub xShutdown: ::std::option::Option, pub xCreate: ::std::option::Option *mut sqlite3_pcache>, pub xCachesize: ::std::option::Option, + nCachesize: ::libc::c_int)>, pub xPagecount: ::std::option::Option ::libc::c_int>, pub xFetch: ::std::option::Option *mut sqlite3_pcache_page>, pub xUnpin: ::std::option::Option, + discard: ::libc::c_int)>, pub xRekey: ::std::option::Option, + oldKey: ::libc::c_uint, + newKey: ::libc::c_uint)>, pub xTruncate: ::std::option::Option, + iLimit: ::libc::c_uint)>, pub xDestroy: ::std::option::Option, pub xShrink: ::std::option::Option, pub xCreate: ::std::option::Option *mut sqlite3_pcache>, pub xCachesize: ::std::option::Option, + nCachesize: ::libc::c_int)>, pub xPagecount: ::std::option::Option ::libc::c_int>, pub xFetch: ::std::option::Option *mut ::libc::c_void>, pub xUnpin: ::std::option::Option, + discard: ::libc::c_int)>, pub xRekey: ::std::option::Option, + oldKey: ::libc::c_uint, + newKey: ::libc::c_uint)>, pub xTruncate: ::std::option::Option, + iLimit: ::libc::c_uint)>, pub xDestroy: ::std::option::Option, } +#[deriving(Copy)] pub enum Struct_sqlite3_backup { } pub type sqlite3_backup = Struct_sqlite3_backup; pub type sqlite3_rtree_geometry = Struct_sqlite3_rtree_geometry; -pub type sqlite3_rtree_query_info = Struct_sqlite3_rtree_query_info; -pub type sqlite3_rtree_dbl = ::libc::c_double; #[repr(C)] +#[deriving(Copy)] pub struct Struct_sqlite3_rtree_geometry { pub pContext: *mut ::libc::c_void, pub nParam: ::libc::c_int, - pub aParam: *mut sqlite3_rtree_dbl, + pub aParam: *mut ::libc::c_double, pub pUser: *mut ::libc::c_void, pub xDelUser: ::std::option::Option, } -#[repr(C)] -pub struct Struct_sqlite3_rtree_query_info { - pub pContext: *mut ::libc::c_void, - pub nParam: ::libc::c_int, - pub aParam: *mut sqlite3_rtree_dbl, - pub pUser: *mut ::libc::c_void, - pub xDelUser: ::std::option::Option, - pub aCoord: *mut sqlite3_rtree_dbl, - pub anQueue: *mut ::libc::c_uint, - pub nCoord: ::libc::c_int, - pub iLevel: ::libc::c_int, - pub mxLevel: ::libc::c_int, - pub iRowid: sqlite3_int64, - pub rParentScore: sqlite3_rtree_dbl, - pub eParentWithin: ::libc::c_int, - pub eWithin: ::libc::c_int, - pub rScore: sqlite3_rtree_dbl, -} -//#[link(name = "sqlite3", kind = "framework")] #[link(name = "sqlite3")] extern "C" { pub static mut sqlite3_version: *const ::libc::c_char; pub static mut sqlite3_temp_directory: *mut ::libc::c_char; pub static mut sqlite3_data_directory: *mut ::libc::c_char; +} +extern "C" { pub fn sqlite3_libversion() -> *const ::libc::c_char; pub fn sqlite3_sourceid() -> *const ::libc::c_char; pub fn sqlite3_libversion_number() -> ::libc::c_int; - pub fn sqlite3_compileoption_used(zOptName: *const ::libc::c_char) -> - ::libc::c_int; - pub fn sqlite3_compileoption_get(N: ::libc::c_int) -> - *const ::libc::c_char; + pub fn sqlite3_compileoption_used(zOptName: *const ::libc::c_char) + -> ::libc::c_int; + pub fn sqlite3_compileoption_get(N: ::libc::c_int) + -> *const ::libc::c_char; pub fn sqlite3_threadsafe() -> ::libc::c_int; pub fn sqlite3_close(arg1: *mut sqlite3) -> ::libc::c_int; - pub fn sqlite3_close_v2(arg1: *mut sqlite3) -> ::libc::c_int; pub fn sqlite3_exec(arg1: *mut sqlite3, sql: *const ::libc::c_char, callback: ::std::option::Option + ::libc::c_int>, + arg2: *mut ::libc::c_void, - arg2: ::libc::c_int, - arg3: - *mut *mut ::libc::c_char, - arg4: + errmsg: *mut *mut ::libc::c_char) -> ::libc::c_int>, arg2: *mut ::libc::c_void, @@ -558,11 +567,11 @@ extern "C" { pub fn sqlite3_os_init() -> ::libc::c_int; pub fn sqlite3_os_end() -> ::libc::c_int; pub fn sqlite3_config(arg1: ::libc::c_int, ...) -> ::libc::c_int; - pub fn sqlite3_db_config(arg1: *mut sqlite3, op: ::libc::c_int, ...) -> - ::libc::c_int; + pub fn sqlite3_db_config(arg1: *mut sqlite3, op: ::libc::c_int, ...) + -> ::libc::c_int; pub fn sqlite3_extended_result_codes(arg1: *mut sqlite3, - onoff: ::libc::c_int) -> - ::libc::c_int; + onoff: ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_last_insert_rowid(arg1: *mut sqlite3) -> sqlite3_int64; pub fn sqlite3_changes(arg1: *mut sqlite3) -> ::libc::c_int; pub fn sqlite3_total_changes(arg1: *mut sqlite3) -> ::libc::c_int; @@ -573,75 +582,111 @@ extern "C" { arg2: ::std::option::Option + ::libc::c_int>, + arg3: + *mut ::libc::c_void) -> ::libc::c_int>, arg3: *mut ::libc::c_void) -> ::libc::c_int; - pub fn sqlite3_busy_timeout(arg1: *mut sqlite3, ms: ::libc::c_int) -> - ::libc::c_int; + pub fn sqlite3_busy_timeout(arg1: *mut sqlite3, ms: ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_get_table(db: *mut sqlite3, zSql: *const ::libc::c_char, pazResult: *mut *mut *mut ::libc::c_char, pnRow: *mut ::libc::c_int, pnColumn: *mut ::libc::c_int, - pzErrmsg: *mut *mut ::libc::c_char) -> - ::libc::c_int; + pzErrmsg: *mut *mut ::libc::c_char) + -> ::libc::c_int; pub fn sqlite3_free_table(result: *mut *mut ::libc::c_char); - pub fn sqlite3_mprintf(arg1: *const ::libc::c_char, ...) -> - *mut ::libc::c_char; + pub fn sqlite3_mprintf(arg1: *const ::libc::c_char, ...) + -> *mut ::libc::c_char; pub fn sqlite3_snprintf(arg1: ::libc::c_int, arg2: *mut ::libc::c_char, - arg3: *const ::libc::c_char, ...) -> - *mut ::libc::c_char; + arg3: *const ::libc::c_char, ...) + -> *mut ::libc::c_char; pub fn sqlite3_malloc(arg1: ::libc::c_int) -> *mut ::libc::c_void; - pub fn sqlite3_realloc(arg1: *mut ::libc::c_void, arg2: ::libc::c_int) -> - *mut ::libc::c_void; + pub fn sqlite3_realloc(arg1: *mut ::libc::c_void, arg2: ::libc::c_int) + -> *mut ::libc::c_void; pub fn sqlite3_free(arg1: *mut ::libc::c_void); pub fn sqlite3_memory_used() -> sqlite3_int64; - pub fn sqlite3_memory_highwater(resetFlag: ::libc::c_int) -> - sqlite3_int64; + pub fn sqlite3_memory_highwater(resetFlag: ::libc::c_int) + -> sqlite3_int64; pub fn sqlite3_randomness(N: ::libc::c_int, P: *mut ::libc::c_void); pub fn sqlite3_set_authorizer(arg1: *mut sqlite3, xAuth: ::std::option::Option + ::libc::c_int>, + pUserData: + *mut ::libc::c_void) -> ::libc::c_int>, - pUserData: *mut ::libc::c_void) -> - ::libc::c_int; + pUserData: *mut ::libc::c_void) + -> ::libc::c_int; pub fn sqlite3_trace(arg1: *mut sqlite3, xTrace: ::std::option::Option, arg2: - *const ::libc::c_char)>, + *mut ::libc::c_void)>, arg2: *mut ::libc::c_void) -> *mut ::libc::c_void; pub fn sqlite3_profile(arg1: *mut sqlite3, xProfile: ::std::option::Option, arg2: - *const ::libc::c_char, - arg3: - sqlite3_uint64)>, + *mut ::libc::c_void)>, arg2: *mut ::libc::c_void) -> *mut ::libc::c_void; pub fn sqlite3_progress_handler(arg1: *mut sqlite3, arg2: ::libc::c_int, arg3: ::std::option::Option + ::libc::c_int>, + arg4: *mut ::libc::c_void) -> ::libc::c_int>, @@ -654,8 +699,8 @@ extern "C" { ppDb: *mut *mut sqlite3, flags: ::libc::c_int, zVfs: *const ::libc::c_char) -> ::libc::c_int; pub fn sqlite3_uri_parameter(zFilename: *const ::libc::c_char, - zParam: *const ::libc::c_char) -> - *const ::libc::c_char; + zParam: *const ::libc::c_char) + -> *const ::libc::c_char; pub fn sqlite3_uri_boolean(zFile: *const ::libc::c_char, zParam: *const ::libc::c_char, bDefault: ::libc::c_int) -> ::libc::c_int; @@ -666,104 +711,103 @@ extern "C" { pub fn sqlite3_extended_errcode(db: *mut sqlite3) -> ::libc::c_int; pub fn sqlite3_errmsg(arg1: *mut sqlite3) -> *const ::libc::c_char; pub fn sqlite3_errmsg16(arg1: *mut sqlite3) -> *const ::libc::c_void; - pub fn sqlite3_errstr(arg1: ::libc::c_int) -> *const ::libc::c_char; pub fn sqlite3_limit(arg1: *mut sqlite3, id: ::libc::c_int, newVal: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_prepare(db: *mut sqlite3, zSql: *const ::libc::c_char, nByte: ::libc::c_int, ppStmt: *mut *mut sqlite3_stmt, - pzTail: *mut *const ::libc::c_char) -> - ::libc::c_int; + pzTail: *mut *const ::libc::c_char) + -> ::libc::c_int; pub fn sqlite3_prepare_v2(db: *mut sqlite3, zSql: *const ::libc::c_char, nByte: ::libc::c_int, ppStmt: *mut *mut sqlite3_stmt, - pzTail: *mut *const ::libc::c_char) -> - ::libc::c_int; + pzTail: *mut *const ::libc::c_char) + -> ::libc::c_int; pub fn sqlite3_prepare16(db: *mut sqlite3, zSql: *const ::libc::c_void, nByte: ::libc::c_int, ppStmt: *mut *mut sqlite3_stmt, - pzTail: *mut *const ::libc::c_void) -> - ::libc::c_int; + pzTail: *mut *const ::libc::c_void) + -> ::libc::c_int; pub fn sqlite3_prepare16_v2(db: *mut sqlite3, zSql: *const ::libc::c_void, nByte: ::libc::c_int, ppStmt: *mut *mut sqlite3_stmt, - pzTail: *mut *const ::libc::c_void) -> - ::libc::c_int; + pzTail: *mut *const ::libc::c_void) + -> ::libc::c_int; pub fn sqlite3_sql(pStmt: *mut sqlite3_stmt) -> *const ::libc::c_char; pub fn sqlite3_stmt_readonly(pStmt: *mut sqlite3_stmt) -> ::libc::c_int; pub fn sqlite3_stmt_busy(arg1: *mut sqlite3_stmt) -> ::libc::c_int; pub fn sqlite3_bind_blob(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: *const ::libc::c_void, n: ::libc::c_int, arg4: - ::std::option::Option) - -> ::libc::c_int; + ::std::option::Option) + -> ::libc::c_int; pub fn sqlite3_bind_double(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: ::libc::c_double) -> ::libc::c_int; pub fn sqlite3_bind_int(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_bind_int64(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: sqlite3_int64) -> ::libc::c_int; - pub fn sqlite3_bind_null(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int) -> - ::libc::c_int; + pub fn sqlite3_bind_null(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_bind_text(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: *const ::libc::c_char, n: ::libc::c_int, arg4: - ::std::option::Option) - -> ::libc::c_int; + ::std::option::Option) + -> ::libc::c_int; pub fn sqlite3_bind_text16(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: *const ::libc::c_void, arg4: ::libc::c_int, arg5: - ::std::option::Option) - -> ::libc::c_int; + ::std::option::Option) + -> ::libc::c_int; pub fn sqlite3_bind_value(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, arg3: *const sqlite3_value) -> ::libc::c_int; pub fn sqlite3_bind_zeroblob(arg1: *mut sqlite3_stmt, arg2: ::libc::c_int, n: ::libc::c_int) -> ::libc::c_int; - pub fn sqlite3_bind_parameter_count(arg1: *mut sqlite3_stmt) -> - ::libc::c_int; + pub fn sqlite3_bind_parameter_count(arg1: *mut sqlite3_stmt) + -> ::libc::c_int; pub fn sqlite3_bind_parameter_name(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_char; + arg2: ::libc::c_int) + -> *const ::libc::c_char; pub fn sqlite3_bind_parameter_index(arg1: *mut sqlite3_stmt, - zName: *const ::libc::c_char) -> - ::libc::c_int; + zName: *const ::libc::c_char) + -> ::libc::c_int; pub fn sqlite3_clear_bindings(arg1: *mut sqlite3_stmt) -> ::libc::c_int; pub fn sqlite3_column_count(pStmt: *mut sqlite3_stmt) -> ::libc::c_int; - pub fn sqlite3_column_name(arg1: *mut sqlite3_stmt, N: ::libc::c_int) -> - *const ::libc::c_char; - pub fn sqlite3_column_name16(arg1: *mut sqlite3_stmt, N: ::libc::c_int) -> - *const ::libc::c_void; + pub fn sqlite3_column_name(arg1: *mut sqlite3_stmt, N: ::libc::c_int) + -> *const ::libc::c_char; + pub fn sqlite3_column_name16(arg1: *mut sqlite3_stmt, N: ::libc::c_int) + -> *const ::libc::c_void; pub fn sqlite3_column_database_name(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_char; + arg2: ::libc::c_int) + -> *const ::libc::c_char; pub fn sqlite3_column_database_name16(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_void; + arg2: ::libc::c_int) + -> *const ::libc::c_void; pub fn sqlite3_column_table_name(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_char; + arg2: ::libc::c_int) + -> *const ::libc::c_char; pub fn sqlite3_column_table_name16(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_void; + arg2: ::libc::c_int) + -> *const ::libc::c_void; pub fn sqlite3_column_origin_name(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_char; + arg2: ::libc::c_int) + -> *const ::libc::c_char; pub fn sqlite3_column_origin_name16(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_void; + arg2: ::libc::c_int) + -> *const ::libc::c_void; pub fn sqlite3_column_decltype(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_char; + arg2: ::libc::c_int) + -> *const ::libc::c_char; pub fn sqlite3_column_decltype16(arg1: *mut sqlite3_stmt, - arg2: ::libc::c_int) -> - *const ::libc::c_void; + arg2: ::libc::c_int) + -> *const ::libc::c_void; pub fn sqlite3_step(arg1: *mut sqlite3_stmt) -> ::libc::c_int; pub fn sqlite3_data_count(pStmt: *mut sqlite3_stmt) -> ::libc::c_int; pub fn sqlite3_column_blob(arg1: *mut sqlite3_stmt, iCol: ::libc::c_int) @@ -774,8 +818,8 @@ extern "C" { iCol: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_column_double(arg1: *mut sqlite3_stmt, iCol: ::libc::c_int) -> ::libc::c_double; - pub fn sqlite3_column_int(arg1: *mut sqlite3_stmt, iCol: ::libc::c_int) -> - ::libc::c_int; + pub fn sqlite3_column_int(arg1: *mut sqlite3_stmt, iCol: ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_column_int64(arg1: *mut sqlite3_stmt, iCol: ::libc::c_int) -> sqlite3_int64; pub fn sqlite3_column_text(arg1: *mut sqlite3_stmt, iCol: ::libc::c_int) @@ -795,24 +839,100 @@ extern "C" { pApp: *mut ::libc::c_void, xFunc: ::std::option::Option, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option)>, xStep: ::std::option::Option, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option)>, xFinal: ::std::option::Option) + (db: + *mut sqlite3, + zFunctionName: + *const ::libc::c_char, + nArg: + ::libc::c_int, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option)>) -> ::libc::c_int; pub fn sqlite3_create_function16(db: *mut sqlite3, zFunctionName: *const ::libc::c_void, @@ -821,24 +941,100 @@ extern "C" { pApp: *mut ::libc::c_void, xFunc: ::std::option::Option, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option)>, xStep: ::std::option::Option, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option)>, xFinal: ::std::option::Option) + (db: + *mut sqlite3, + zFunctionName: + *const ::libc::c_void, + nArg: + ::libc::c_int, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option)>) -> ::libc::c_int; pub fn sqlite3_create_function_v2(db: *mut sqlite3, zFunctionName: *const ::libc::c_char, @@ -847,72 +1043,198 @@ extern "C" { pApp: *mut ::libc::c_void, xFunc: ::std::option::Option, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option, + xDestroy: + ::std::option::Option)>, xStep: ::std::option::Option, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option, + xDestroy: + ::std::option::Option)>, xFinal: ::std::option::Option, + (db: + *mut sqlite3, + zFunctionName: + *const ::libc::c_char, + nArg: + ::libc::c_int, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option, + xDestroy: + ::std::option::Option)>, xDestroy: ::std::option::Option) + (db: + *mut sqlite3, + zFunctionName: + *const ::libc::c_char, + nArg: + ::libc::c_int, + eTextRep: + ::libc::c_int, + pApp: + *mut ::libc::c_void, + xFunc: + ::std::option::Option, + xStep: + ::std::option::Option, + xFinal: + ::std::option::Option, + xDestroy: + ::std::option::Option)>) + -> ::libc::c_int; + pub fn sqlite3_aggregate_count(arg1: *mut sqlite3_context) -> ::libc::c_int; - pub fn sqlite3_aggregate_count(arg1: *mut sqlite3_context) -> - ::libc::c_int; pub fn sqlite3_expired(arg1: *mut sqlite3_stmt) -> ::libc::c_int; pub fn sqlite3_transfer_bindings(arg1: *mut sqlite3_stmt, - arg2: *mut sqlite3_stmt) -> - ::libc::c_int; + arg2: *mut sqlite3_stmt) + -> ::libc::c_int; pub fn sqlite3_global_recover() -> ::libc::c_int; pub fn sqlite3_thread_cleanup(); pub fn sqlite3_memory_alarm(arg1: ::std::option::Option, arg2: - sqlite3_int64, + *mut ::libc::c_void, arg3: - ::libc::c_int)>, + sqlite3_int64)>, arg2: *mut ::libc::c_void, arg3: sqlite3_int64) -> ::libc::c_int; - pub fn sqlite3_value_blob(arg1: *mut sqlite3_value) -> - *const ::libc::c_void; + pub fn sqlite3_value_blob(arg1: *mut sqlite3_value) + -> *const ::libc::c_void; pub fn sqlite3_value_bytes(arg1: *mut sqlite3_value) -> ::libc::c_int; pub fn sqlite3_value_bytes16(arg1: *mut sqlite3_value) -> ::libc::c_int; pub fn sqlite3_value_double(arg1: *mut sqlite3_value) -> ::libc::c_double; pub fn sqlite3_value_int(arg1: *mut sqlite3_value) -> ::libc::c_int; pub fn sqlite3_value_int64(arg1: *mut sqlite3_value) -> sqlite3_int64; - pub fn sqlite3_value_text(arg1: *mut sqlite3_value) -> - *const ::libc::c_uchar; - pub fn sqlite3_value_text16(arg1: *mut sqlite3_value) -> - *const ::libc::c_void; - pub fn sqlite3_value_text16le(arg1: *mut sqlite3_value) -> - *const ::libc::c_void; - pub fn sqlite3_value_text16be(arg1: *mut sqlite3_value) -> - *const ::libc::c_void; + pub fn sqlite3_value_text(arg1: *mut sqlite3_value) + -> *const ::libc::c_uchar; + pub fn sqlite3_value_text16(arg1: *mut sqlite3_value) + -> *const ::libc::c_void; + pub fn sqlite3_value_text16le(arg1: *mut sqlite3_value) + -> *const ::libc::c_void; + pub fn sqlite3_value_text16be(arg1: *mut sqlite3_value) + -> *const ::libc::c_void; pub fn sqlite3_value_type(arg1: *mut sqlite3_value) -> ::libc::c_int; - pub fn sqlite3_value_numeric_type(arg1: *mut sqlite3_value) -> - ::libc::c_int; + pub fn sqlite3_value_numeric_type(arg1: *mut sqlite3_value) + -> ::libc::c_int; pub fn sqlite3_aggregate_context(arg1: *mut sqlite3_context, - nBytes: ::libc::c_int) -> - *mut ::libc::c_void; - pub fn sqlite3_user_data(arg1: *mut sqlite3_context) -> - *mut ::libc::c_void; - pub fn sqlite3_context_db_handle(arg1: *mut sqlite3_context) -> - *mut sqlite3; + nBytes: ::libc::c_int) + -> *mut ::libc::c_void; + pub fn sqlite3_user_data(arg1: *mut sqlite3_context) + -> *mut ::libc::c_void; + pub fn sqlite3_context_db_handle(arg1: *mut sqlite3_context) + -> *mut sqlite3; pub fn sqlite3_get_auxdata(arg1: *mut sqlite3_context, N: ::libc::c_int) -> *mut ::libc::c_void; pub fn sqlite3_set_auxdata(arg1: *mut sqlite3_context, N: ::libc::c_int, @@ -920,14 +1242,30 @@ extern "C" { arg3: ::std::option::Option); + *mut sqlite3_context, + N: + ::libc::c_int, + arg2: + *mut ::libc::c_void, + arg3: + ::std::option::Option)>); pub fn sqlite3_result_blob(arg1: *mut sqlite3_context, arg2: *const ::libc::c_void, arg3: ::libc::c_int, arg4: ::std::option::Option); + *mut sqlite3_context, + arg2: + *const ::libc::c_void, + arg3: + ::libc::c_int, + arg4: + ::std::option::Option)>); pub fn sqlite3_result_double(arg1: *mut sqlite3_context, arg2: ::libc::c_double); pub fn sqlite3_result_error(arg1: *mut sqlite3_context, @@ -951,28 +1289,60 @@ extern "C" { arg4: ::std::option::Option); + *mut sqlite3_context, + arg2: + *const ::libc::c_char, + arg3: + ::libc::c_int, + arg4: + ::std::option::Option)>); pub fn sqlite3_result_text16(arg1: *mut sqlite3_context, arg2: *const ::libc::c_void, arg3: ::libc::c_int, arg4: ::std::option::Option); + *mut sqlite3_context, + arg2: + *const ::libc::c_void, + arg3: + ::libc::c_int, + arg4: + ::std::option::Option)>); pub fn sqlite3_result_text16le(arg1: *mut sqlite3_context, arg2: *const ::libc::c_void, arg3: ::libc::c_int, arg4: ::std::option::Option); + *mut sqlite3_context, + arg2: + *const ::libc::c_void, + arg3: + ::libc::c_int, + arg4: + ::std::option::Option)>); pub fn sqlite3_result_text16be(arg1: *mut sqlite3_context, arg2: *const ::libc::c_void, arg3: ::libc::c_int, arg4: ::std::option::Option); + *mut sqlite3_context, + arg2: + *const ::libc::c_void, + arg3: + ::libc::c_int, + arg4: + ::std::option::Option)>); pub fn sqlite3_result_value(arg1: *mut sqlite3_context, arg2: *mut sqlite3_value); pub fn sqlite3_result_zeroblob(arg1: *mut sqlite3_context, @@ -984,15 +1354,27 @@ extern "C" { xCompare: ::std::option::Option + ::libc::c_int>) -> ::libc::c_int>) -> ::libc::c_int; @@ -1003,21 +1385,61 @@ extern "C" { xCompare: ::std::option::Option + ::libc::c_int>, + xDestroy: + ::std::option::Option) -> ::libc::c_int>, xDestroy: ::std::option::Option) + *mut sqlite3, + zName: + *const ::libc::c_char, + eTextRep: + ::libc::c_int, + pArg: + *mut ::libc::c_void, + xCompare: + ::std::option::Option + ::libc::c_int>, + xDestroy: + ::std::option::Option)>) -> ::libc::c_int; pub fn sqlite3_create_collation16(arg1: *mut sqlite3, zName: *const ::libc::c_void, @@ -1026,15 +1448,27 @@ extern "C" { xCompare: ::std::option::Option + ::libc::c_int>) -> ::libc::c_int>) -> ::libc::c_int; @@ -1043,69 +1477,101 @@ extern "C" { arg3: ::std::option::Option) + ::std::option::Option)>) -> ::libc::c_int; pub fn sqlite3_collation_needed16(arg1: *mut sqlite3, arg2: *mut ::libc::c_void, arg3: ::std::option::Option) + ::std::option::Option)>) -> ::libc::c_int; pub fn sqlite3_sleep(arg1: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_get_autocommit(arg1: *mut sqlite3) -> ::libc::c_int; pub fn sqlite3_db_handle(arg1: *mut sqlite3_stmt) -> *mut sqlite3; pub fn sqlite3_db_filename(db: *mut sqlite3, - zDbName: *const ::libc::c_char) -> - *const ::libc::c_char; + zDbName: *const ::libc::c_char) + -> *const ::libc::c_char; pub fn sqlite3_db_readonly(db: *mut sqlite3, - zDbName: *const ::libc::c_char) -> - ::libc::c_int; - pub fn sqlite3_next_stmt(pDb: *mut sqlite3, pStmt: *mut sqlite3_stmt) -> - *mut sqlite3_stmt; + zDbName: *const ::libc::c_char) + -> ::libc::c_int; + pub fn sqlite3_next_stmt(pDb: *mut sqlite3, pStmt: *mut sqlite3_stmt) + -> *mut sqlite3_stmt; pub fn sqlite3_commit_hook(arg1: *mut sqlite3, arg2: ::std::option::Option + ::libc::c_int>, + arg3: *mut ::libc::c_void) -> ::libc::c_int>, - arg3: *mut ::libc::c_void) -> - *mut ::libc::c_void; + arg3: *mut ::libc::c_void) + -> *mut ::libc::c_void; pub fn sqlite3_rollback_hook(arg1: *mut sqlite3, arg2: ::std::option::Option, + arg3: *mut ::libc::c_void)>, - arg3: *mut ::libc::c_void) -> - *mut ::libc::c_void; + arg3: *mut ::libc::c_void) + -> *mut ::libc::c_void; pub fn sqlite3_update_hook(arg1: *mut sqlite3, arg2: ::std::option::Option, arg3: - *const ::libc::c_char, - arg4: - *const ::libc::c_char, - arg5: - sqlite3_int64)>, - arg3: *mut ::libc::c_void) -> - *mut ::libc::c_void; + *mut ::libc::c_void)>, + arg3: *mut ::libc::c_void) + -> *mut ::libc::c_void; pub fn sqlite3_enable_shared_cache(arg1: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_release_memory(arg1: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_db_release_memory(arg1: *mut sqlite3) -> ::libc::c_int; @@ -1121,37 +1587,46 @@ extern "C" { *mut *const ::libc::c_char, pNotNull: *mut ::libc::c_int, pPrimaryKey: *mut ::libc::c_int, - pAutoinc: *mut ::libc::c_int) -> - ::libc::c_int; + pAutoinc: *mut ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_load_extension(db: *mut sqlite3, zFile: *const ::libc::c_char, zProc: *const ::libc::c_char, - pzErrMsg: *mut *mut ::libc::c_char) -> - ::libc::c_int; - pub fn sqlite3_enable_load_extension(db: *mut sqlite3, - onoff: ::libc::c_int) -> - ::libc::c_int; - pub fn sqlite3_auto_extension(xEntryPoint: - ::std::option::Option) + pzErrMsg: *mut *mut ::libc::c_char) + -> ::libc::c_int; + pub fn sqlite3_enable_load_extension(db: *mut sqlite3, + onoff: ::libc::c_int) + -> ::libc::c_int; + pub fn sqlite3_auto_extension(xEntryPoint: + ::std::option::Option)>) -> ::libc::c_int; - pub fn sqlite3_cancel_auto_extension(xEntryPoint: - ::std::option::Option) -> - ::libc::c_int; pub fn sqlite3_reset_auto_extension(); pub fn sqlite3_create_module(db: *mut sqlite3, zName: *const ::libc::c_char, p: *const sqlite3_module, - pClientData: *mut ::libc::c_void) -> - ::libc::c_int; + pClientData: *mut ::libc::c_void) + -> ::libc::c_int; pub fn sqlite3_create_module_v2(db: *mut sqlite3, zName: *const ::libc::c_char, p: *const sqlite3_module, pClientData: *mut ::libc::c_void, xDestroy: ::std::option::Option) + (db: + *mut sqlite3, + zName: + *const ::libc::c_char, + p: + *const sqlite3_module, + pClientData: + *mut ::libc::c_void, + xDestroy: + ::std::option::Option)>) -> ::libc::c_int; pub fn sqlite3_declare_vtab(arg1: *mut sqlite3, zSQL: *const ::libc::c_char) -> ::libc::c_int; @@ -1168,13 +1643,13 @@ extern "C" { pub fn sqlite3_blob_close(arg1: *mut sqlite3_blob) -> ::libc::c_int; pub fn sqlite3_blob_bytes(arg1: *mut sqlite3_blob) -> ::libc::c_int; pub fn sqlite3_blob_read(arg1: *mut sqlite3_blob, Z: *mut ::libc::c_void, - N: ::libc::c_int, iOffset: ::libc::c_int) -> - ::libc::c_int; + N: ::libc::c_int, iOffset: ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_blob_write(arg1: *mut sqlite3_blob, z: *const ::libc::c_void, n: ::libc::c_int, iOffset: ::libc::c_int) -> ::libc::c_int; - pub fn sqlite3_vfs_find(zVfsName: *const ::libc::c_char) -> - *mut sqlite3_vfs; + pub fn sqlite3_vfs_find(zVfsName: *const ::libc::c_char) + -> *mut sqlite3_vfs; pub fn sqlite3_vfs_register(arg1: *mut sqlite3_vfs, makeDflt: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_vfs_unregister(arg1: *mut sqlite3_vfs) -> ::libc::c_int; @@ -1203,8 +1678,8 @@ extern "C" { pub fn sqlite3_backup_init(pDest: *mut sqlite3, zDestName: *const ::libc::c_char, pSource: *mut sqlite3, - zSourceName: *const ::libc::c_char) -> - *mut sqlite3_backup; + zSourceName: *const ::libc::c_char) + -> *mut sqlite3_backup; pub fn sqlite3_backup_step(p: *mut sqlite3_backup, nPage: ::libc::c_int) -> ::libc::c_int; pub fn sqlite3_backup_finish(p: *mut sqlite3_backup) -> ::libc::c_int; @@ -1213,75 +1688,83 @@ extern "C" { pub fn sqlite3_unlock_notify(pBlocked: *mut sqlite3, xNotify: ::std::option::Option, - pNotifyArg: *mut ::libc::c_void) -> - ::libc::c_int; + (pBlocked: + *mut sqlite3, + xNotify: + ::std::option::Option, + pNotifyArg: + *mut ::libc::c_void)>, + pNotifyArg: *mut ::libc::c_void) + -> ::libc::c_int; pub fn sqlite3_stricmp(arg1: *const ::libc::c_char, arg2: *const ::libc::c_char) -> ::libc::c_int; pub fn sqlite3_strnicmp(arg1: *const ::libc::c_char, arg2: *const ::libc::c_char, arg3: ::libc::c_int) -> ::libc::c_int; - pub fn sqlite3_strglob(zGlob: *const ::libc::c_char, - zStr: *const ::libc::c_char) -> ::libc::c_int; pub fn sqlite3_log(iErrCode: ::libc::c_int, zFormat: *const ::libc::c_char, ...); pub fn sqlite3_wal_hook(arg1: *mut sqlite3, arg2: ::std::option::Option + ::libc::c_int>, arg3: - *const ::libc::c_char, - arg4: - ::libc::c_int) + *mut ::libc::c_void) -> ::libc::c_int>, arg3: *mut ::libc::c_void) -> *mut ::libc::c_void; - pub fn sqlite3_wal_autocheckpoint(db: *mut sqlite3, N: ::libc::c_int) -> - ::libc::c_int; + pub fn sqlite3_wal_autocheckpoint(db: *mut sqlite3, N: ::libc::c_int) + -> ::libc::c_int; pub fn sqlite3_wal_checkpoint(db: *mut sqlite3, - zDb: *const ::libc::c_char) -> - ::libc::c_int; + zDb: *const ::libc::c_char) + -> ::libc::c_int; pub fn sqlite3_wal_checkpoint_v2(db: *mut sqlite3, zDb: *const ::libc::c_char, eMode: ::libc::c_int, pnLog: *mut ::libc::c_int, - pnCkpt: *mut ::libc::c_int) -> - ::libc::c_int; - pub fn sqlite3_vtab_config(arg1: *mut sqlite3, op: ::libc::c_int, ...) -> - ::libc::c_int; + pnCkpt: *mut ::libc::c_int) + -> ::libc::c_int; + pub fn sqlite3_vtab_config(arg1: *mut sqlite3, op: ::libc::c_int, ...) + -> ::libc::c_int; pub fn sqlite3_vtab_on_conflict(arg1: *mut sqlite3) -> ::libc::c_int; pub fn sqlite3_rtree_geometry_callback(db: *mut sqlite3, zGeom: *const ::libc::c_char, xGeom: ::std::option::Option + ::libc::c_int>, + pContext: + *mut ::libc::c_void) -> ::libc::c_int>, - pContext: *mut ::libc::c_void) -> - ::libc::c_int; - pub fn sqlite3_rtree_query_callback(db: *mut sqlite3, - zQueryFunc: *const ::libc::c_char, - xQueryFunc: - ::std::option::Option - ::libc::c_int>, - pContext: *mut ::libc::c_void, - xDestructor: - ::std::option::Option) + pContext: *mut ::libc::c_void) -> ::libc::c_int; } diff --git a/src/lib.rs b/src/lib.rs index 150f642..c263f2a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -320,12 +320,19 @@ impl InnerSqliteConnection { SqliteError{ code: r, message: ffi::code_to_str(r).to_string() } } else { + let e = SqliteError::from_handle(db, r); ffi::sqlite3_close(db); - SqliteError::from_handle(db, r) + e }; return Err(e); } + let r = ffi::sqlite3_busy_timeout(db, 5000); + if r != ffi::SQLITE_OK { + let e = SqliteError::from_handle(db, r); + ffi::sqlite3_close(db); + return Err(e); + } Ok(InnerSqliteConnection{ db: db }) }) } diff --git a/src/transaction.rs b/src/transaction.rs index b5c1501..5df9a6e 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -7,6 +7,7 @@ pub use SqliteTransactionBehavior::{ /// Options for transaction behavior. See [BEGIN /// TRANSACTION](http://www.sqlite.org/lang_transaction.html) for details. +#[deriving(Copy)] pub enum SqliteTransactionBehavior { SqliteTransactionDeferred, SqliteTransactionImmediate, diff --git a/src/types.rs b/src/types.rs index 41617fe..4be05f0 100644 --- a/src/types.rs +++ b/src/types.rs @@ -80,11 +80,11 @@ macro_rules! raw_to_impl( } } ) -) +); -raw_to_impl!(c_int, sqlite3_bind_int) -raw_to_impl!(i64, sqlite3_bind_int64) -raw_to_impl!(c_double, sqlite3_bind_double) +raw_to_impl!(c_int, sqlite3_bind_int); +raw_to_impl!(i64, sqlite3_bind_int64); +raw_to_impl!(c_double, sqlite3_bind_double); impl<'a> ToSql for &'a str { unsafe fn bind_parameter(&self, stmt: *mut ffi::sqlite3_stmt, col: c_int) -> c_int { @@ -141,6 +141,7 @@ impl ToSql for Option { /// conn.execute("INSERT INTO people (name) VALUES (?)", &[&Null]) /// } /// ``` +#[deriving(Copy)] pub struct Null; impl ToSql for Null { @@ -157,11 +158,11 @@ macro_rules! raw_from_impl( } } ) -) +); -raw_from_impl!(c_int, sqlite3_column_int) -raw_from_impl!(i64, sqlite3_column_int64) -raw_from_impl!(c_double, sqlite3_column_double) +raw_from_impl!(c_int, sqlite3_column_int); +raw_from_impl!(i64, sqlite3_column_int64); +raw_from_impl!(c_double, sqlite3_column_double); impl FromSql for String { unsafe fn column_result(stmt: *mut ffi::sqlite3_stmt, col: c_int) -> SqliteResult {