diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/rtree/rtree.c | 2 | ||||
-rw-r--r-- | ext/rtree/rtree1.test | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/ext/rtree/rtree.c b/ext/rtree/rtree.c index da5e2a97a..d24e9eb84 100644 --- a/ext/rtree/rtree.c +++ b/ext/rtree/rtree.c @@ -2051,7 +2051,7 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){ zIdxStr[iIdx++] = op; zIdxStr[iIdx++] = (char)(p->iColumn - 1 + '0'); pIdxInfo->aConstraintUsage[ii].argvIndex = (iIdx/2); - pIdxInfo->aConstraintUsage[ii].omit = 1; + pIdxInfo->aConstraintUsage[ii].omit = (op!=RTREE_EQ); } } } diff --git a/ext/rtree/rtree1.test b/ext/rtree/rtree1.test index 034155341..033bd7d9e 100644 --- a/ext/rtree/rtree1.test +++ b/ext/rtree/rtree1.test @@ -756,4 +756,18 @@ do_execsql_test 20.4 { SELECT * FROM t1 JOIN t0 ON true RIGHT JOIN rt0 ON x0>a WHERE x0 = 0; } {- - 0 0.0 0.0} +# 2023-05-19 https://sqlite.org/forum/forumpost/da61c4a1b5b4af19 +# Do not omit constraints that involve equality comparisons of +# floating-point values. +# +reset_db +do_execsql_test 21.0 { + CREATE VIRTUAL TABLE t1 USING rtree(id, x0, x1); + INSERT INTO t1 VALUES(0, 1, 9223372036854775807); + SELECT count(*) FROM t1 WHERE x1=9223372036854775807; +} {0} +do_execsql_test 21.1 { + SELECT x1=9223372036854775807 FROM t1; +} {0} + finish_test |