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)
- subsecond modifier like unixepoch('now', 'subsec') does not work HOT 3
- FOREIGN KEY constraint failed HOT 11
- Best way to co-exist with SQLX HOT 1
- Custom window functions and mutability HOT 5
- sqlite3_file_control HOT 2
- Insert with returning clause seems to succeed, but subsequent query fails to find the record -> Data is lost HOT 1
- Support for SQLITE_IOCAP_IMMUTABLE HOT 4
- Potentially confusing error HOT 4
- Error building for wasm32-wasi HOT 5
- release latest changes HOT 3
- Change in float behavior in 0.30.0 HOT 2
- Check sqlite3_reset usages HOT 1
- test_from_handle fails to build on systems with unsigned c_char HOT 3
- Simplify loadable extension implementation by providing boilerplate code
- Error on building from macos to windows HOT 2
- Add derive macros for `FromSql` and `ToSql` on newtypes
- libsqlite3-sys fails to build on arm64: error[E0308]: mismatched types HOT 2
- release the latest version HOT 4
- FromSql vs TryFrom / ToSql vs TryInto HOT 1
- `sqlite3_compileoption_used` and Rust `const fn`
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.