I'm encountering some issues with rusqlite which on the surface appears to be related to running against "old" dynamically linked sqlite versions. I put "old" in quotes because I don't really consider them to be old (for instance version 3.22.0; the version in Ubuntu 18.04 LTS Desktop).
My applications experiencing these issues do not use any new or modern features; they could probably use some of the very earliest sqlite3 versions without modifications.
The problems I'm having are rather weird; in one case it complains about SQL logic error, and in another case I get an empty result set (the same query yields results when running from the sqlite3 command line tool). (Just to be clear; there's not SQL logic error; the query works fine when running the sqlite3 command line tool).
The reason I'm leaning toward it being an issue with being "old" is that if I switch to
features = [ "bundled" ] the problems go away. This in itself doesn't really say much, but I had a rusqlite applications running on two different macs; one with a recently updated sqlite3 (via pkgsrc) and the other with an "old" sqlite3 (also from pkgsrc). The former worked flawlessly, the latter experienced issues. When I upgraded the the outdated one the problems went away.
This is very peculiar, because I'm used to sqlite3 Just Working(tm), regardless of which version I'm using (as I mentioned earlier, featurewise, everything I'm doing wrt API and queries is basically stone-age stuff).
I'm seeing these kinds of issues on both Ubuntu and macOS.
I can just use the bundled version to work around this issue, but this is nagging me -- it doesn't feel like it makes sense. The rusqlite Cargo.toml implies that it supports far older versions than the ones I've been having issues with.
Does anyone have any explanation for this?