2 ms·
> Yeah, but who ever writes "x=0.9" as a constraint on a partial index? Not me! But you have me curious now; does sqlite do a text comparison for the constrai
by emmelaich 1y ago
> Yeah, but who ever writes "x=0.9" as a constraint on a partial index?
Not me! But you have me curious now; does sqlite do a text comparison for the constraint? Surely (maybe not) 0.9 == .9?
Can you do a constraint as (int)(100 * x) <= 90?
PS. Thanks for sqlite!
- SQLite 1y agoThe top-level routine is here: <https://sqlite.org/src/info/aae36a5fbd17?ln=6767-6818 https://sqlite.org/src/info/aae36a5fbd17?ln=6767-6818>. Small (32-bit) integer literals are compared numerically, here: <https://sqlite.org/src/info/aae36a5fbd17?ln=6526 https://sqlite.org/src/info/aae36a5fbd17?ln=6526>. They don't have to exactly match. So if you say "x=0x123" in the WHERE clause of the partial index and "x=291" in the WHERE clause of the query, and that will still work. However, 64-bit integer literals and floating-point literals are compared using strcmp(), here: <https://sqlite.org/src/info/aae36a5fbd17?ln=6570 https://sqlite.org/src/info/aae36a5fbd17?ln=6570>, so they do need to match exactly, at least in the current implementation. Maybe that is something I should work on...