praeclarum / sqlite-net

Simple, powerful, cross-platform SQLite client and ORM for .NET
MIT License
4.08k stars 1.42k forks source link

SQLite R*Tree Module support (for geospatial systems) #565

Open oscarvarto opened 7 years ago

oscarvarto commented 7 years ago

Given that SQLitePCL.raw is compiled with R*Tree module support: https://github.com/ericsink/SQLitePCL.raw/issues/165#issuecomment-309893278

how can I access/load the aforementioned module with sqlite-net?

ericsink commented 7 years ago

When I answered the other question, I wondered which SQLite API you were using. :-)

You may need to clarify this question a bit further.

Are you asking basic questions about how to use RTREE?

Or perhaps you are asking if sqlite-net has rtree-specific features? (Probably not, as the string "rtree" does not appear in sqlite.cs.)

Or maybe this: You asked about how to "access/load the ... module". I don't think anything should be necessary to load the module. Perhaps just try something like this, as shown in the RTREE docs:

CREATE VIRTUAL TABLE <name> USING rtree(<column-names>);

One clarification from me: Strictly speaking, I did not say that "SQLitePCL.raw is compiled with R*Tree module support". I said that "the e_sqlite3 builds" are compiled that way. And that is slightly different. :-)

Unfortunately, sqlite-net (like most other things that use SQLitePCL.raw) takes a dependency on SQLitePCLRaw.bundle_green, not bundle_e_sqlite3. And bundle_green does in fact use the e_sqlite3 builds, but not on iOS, where it uses the system SQLite instead. So, without some additional effort to swap the bundle (using a bait-and-switch build trick), RTREE stuff with sqlite-net will not work on iOS, but it should work anywhere else.

praeclarum commented 7 years ago

I guess completing #568 will make this work?

praeclarum commented 7 years ago

Looks like we also need #69