Git Product home page Git Product logo

Comments (9)

jgallagher avatar jgallagher commented on May 25, 2024 1

@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.

marcusklaas avatar marcusklaas commented on May 25, 2024

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.

jgallagher avatar jgallagher commented on May 25, 2024

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.

trlim avatar trlim commented on May 25, 2024

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.

jgallagher avatar jgallagher commented on May 25, 2024

Gotcha. I will add that to the library - look for a new version later today. (Will ping here too.)

from rusqlite.

trlim avatar trlim commented on May 25, 2024

It works! Thank you.

from rusqlite.

dckc avatar dckc commented on May 25, 2024

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.

jgallagher avatar jgallagher commented on May 25, 2024

@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.

dckc avatar dckc commented on May 25, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.