Comments (9)
@trlim : Version 0.0.10 should now enable you to do this:
fn load_my_extension(conn: &SqliteConnection) -> SqliteResult<()> {
let _guard = try!(SqliteLoadExtensionGuard::new(conn));
// or use the SELECT version, that's fine too
conn.load_extension(Path::new("spatialite"), None)
}
but you'll need to add the load_extension
feature to the rusqlite dependency in Cargo.toml. Please let me know (reopen this issue or open a new one) if this doesn't work for you.
from rusqlite.
I'm not sure if that is within the scope of this project. Ideally, you'd interact with the connection through native rust calls. If there is functionality only accessible through ffi calls, that should be added to the library.
from rusqlite.
I'm not necessarily opposed to adding an unsafe
escape hatch to grab the database handle, but I agree with @marcusklaas - if there's functionality for which you need the handle, we should probably wrap it in the library. What ffi calls do you need to make?
from rusqlite.
To enable extension loading with sqlite3_enable_load_extension().
let mut conn = ...;
unsafe {
ffi.sqlite3_enable_load_extension(conn.sqlite(), 1);
}
try!(conn.execute("SELECT load_extension('spatialite');", &[]));
unsafe {
// Disable further loading of extension
ffi.sqlite3_enable_load_extension(conn.sqlite(), 0);
}
from rusqlite.
Gotcha. I will add that to the library - look for a new version later today. (Will ping here too.)
from rusqlite.
It works! Thank you.
from rusqlite.
In my bindings, I included an unsafe expose method so that clients can use it with the ffi bindings.
I bring this up because my bindings are in most ways subsumed by yours and I'd just as soon get rid of mine if they're not novel.
Is it worth re-opening this issue? (Does github even support that?)
from rusqlite.
@dckc I'm not necessarily opposed to an expose
method, but I'd view any uses of it as an indication that rusqlite's coverage of SQLite is insufficient. (I suppose we could put a "please open an issue if you need to use this" in the docs for it.) Are there any client uses of it that you know of that aren't possible with the lib?
from rusqlite.
No, I'm not aware of any actual use of the expose
method.
Yes, I agree that use of it indicates that this library should be enhanced.
from rusqlite.
Related Issues (20)
- FromSql vs TryFrom / ToSql vs TryInto HOT 1
- `sqlite3_compileoption_used` and Rust `const fn`
- called `Result::unwrap()` on an `Err` value: SqliteFailure(Error { code: Unknown, extended_code: 1 }, Some("json_object() requires an even number of arguments")) HOT 2
- Apps using `winsqlite3` feature no longer builds HOT 5
- Question: Is there any way to use SQLite 3.45 with rusqlite 0.30.0? HOT 2
- Trait for abstracting over `Connection`/`Transaction`? HOT 3
- SqlInputError { error: Error { code: Unknown, extended_code: 1 }, msg: "unrecognized token: \"{\"" HOT 1
- Release 0.31.0 with SQLite 3.45? HOT 2
- Type issue on select with digits only in a "string" colums. HOT 2
- wasm32-wasi target fails on Apple M3
- How to get "returning *" from insert HOT 2
- Stale Connection Handler on Multi-Threaded Situation HOT 1
- sqlite3_snapshot iteration HOT 2
- Creating `Value::Blob` without necessarily allocating heap HOT 5
- Using rusqlite::vtab::VTabConnection::handle() HOT 4
- Add bindings for `sqlite3_trace_v2` API HOT 4
- iOS Linker Warning: SQLite was build for newer version than being linked HOT 2
- the first query is failure due to below error HOT 1
- Segmentation fault when writing encrypted database with vendored SQLCipher and OpenSSL on OpenBSD
- Adding feature `array` seems to cause a compile failure HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rusqlite.