1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-07 02:42:48 +03:00

Fix the xBestIndex method on rtree so that it correctly recognizes that

rowid=? works the same as id=?.

FossilOrigin-Name: c74c07cc86443057d34284ae31eb68470741592b0e61072fd5e120e82919169b
This commit is contained in:
drh
2021-09-15 16:20:15 +00:00
parent 04bd2c837b
commit 8038cb99b0
4 changed files with 15 additions and 15 deletions

View File

@@ -1986,7 +1986,7 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[ii]; struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[ii];
if( bMatch==0 && p->usable if( bMatch==0 && p->usable
&& p->iColumn==0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ && p->iColumn<=0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ
){ ){
/* We have an equality constraint on the rowid. Use strategy 1. */ /* We have an equality constraint on the rowid. Use strategy 1. */
int jj; int jj;

View File

@@ -145,7 +145,7 @@ populate_t1
do_test rtreeA-2.2.0 { truncate_node 1 200 } {} do_test rtreeA-2.2.0 { truncate_node 1 200 } {}
do_corruption_tests rtreeA-2.2 { do_corruption_tests rtreeA-2.2 {
1 "SELECT * FROM t1" 1 "SELECT * FROM t1"
2 "SELECT * FROM t1 WHERE rowid=5" 2 "SELECT * FROM t1 WHERE +rowid=5"
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)" 3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
4 "SELECT * FROM t1 WHERE x1<10 AND x2>12" 4 "SELECT * FROM t1 WHERE x1<10 AND x2>12"
} }
@@ -160,7 +160,7 @@ do_test rtreeA-3.1.0.1 { set_tree_depth t1 } {1}
do_test rtreeA-3.1.0.2 { set_tree_depth t1 3 } {3} do_test rtreeA-3.1.0.2 { set_tree_depth t1 3 } {3}
do_corruption_tests rtreeA-3.1 { do_corruption_tests rtreeA-3.1 {
1 "SELECT * FROM t1" 1 "SELECT * FROM t1"
2 "SELECT * FROM t1 WHERE rowid=5" 2 "SELECT * FROM t1 WHERE +rowid=5"
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)" 3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
} }
@@ -171,7 +171,7 @@ do_execsql_test rtreeA-3.1.0.3 {
do_test rtreeA-3.2.0 { set_tree_depth t1 1000 } {1000} do_test rtreeA-3.2.0 { set_tree_depth t1 1000 } {1000}
do_corruption_tests rtreeA-3.2 { do_corruption_tests rtreeA-3.2 {
1 "SELECT * FROM t1" 1 "SELECT * FROM t1"
2 "SELECT * FROM t1 WHERE rowid=5" 2 "SELECT * FROM t1 WHERE +rowid=5"
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)" 3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
} }
@@ -183,7 +183,7 @@ do_test rtreeA-3.3.0 {
} {65535} } {65535}
do_corruption_tests rtreeA-3.3 { do_corruption_tests rtreeA-3.3 {
1 "SELECT * FROM t1" 1 "SELECT * FROM t1"
2 "SELECT * FROM t1 WHERE rowid=5" 2 "SELECT * FROM t1 WHERE +rowid=5"
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)" 3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
} }
@@ -203,7 +203,7 @@ do_test rtreeA-4.1.0 {
} {4000} } {4000}
do_corruption_tests rtreeA-4.1 { do_corruption_tests rtreeA-4.1 {
1 "SELECT * FROM t1" 1 "SELECT * FROM t1"
2 "SELECT * FROM t1 WHERE rowid=5" 2 "SELECT * FROM t1 WHERE +rowid=5"
3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)" 3 "INSERT INTO t1 VALUES(1000, 1, 2, 3, 4)"
4 "SELECT * FROM t1 WHERE x1<10 AND x2>12" 4 "SELECT * FROM t1 WHERE x1<10 AND x2>12"
} }
@@ -216,7 +216,7 @@ create_t1
populate_t1 populate_t1
do_execsql_test rtreeA-5.1.0 { DELETE FROM t1_parent } {} do_execsql_test rtreeA-5.1.0 { DELETE FROM t1_parent } {}
do_corruption_tests rtreeA-5.1 { do_corruption_tests rtreeA-5.1 {
1 "DELETE FROM t1 WHERE rowid = 5" 1 "DELETE FROM t1 WHERE +rowid = 5"
2 "DELETE FROM t1" 2 "DELETE FROM t1"
} }

View File

@@ -1,5 +1,5 @@
C Add\sALWAYS()\smacros\son\ssome\sunreachable\sbranches\sin\srtree. C Fix\sthe\sxBestIndex\smethod\son\srtree\sso\sthat\sit\scorrectly\srecognizes\sthat\nrowid=?\sworks\sthe\ssame\sas\sid=?.
D 2021-09-15T15:56:00.093 D 2021-09-15T16:20:15.282
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -393,7 +393,7 @@ F ext/repair/test/checkindex01.test b530f141413b587c9eb78ff734de6bb79bc3515c3350
F ext/repair/test/test.tcl 686d76d888dffd021f64260abf29a55c57b2cedfa7fc69150b42b1d6119aac3c F ext/repair/test/test.tcl 686d76d888dffd021f64260abf29a55c57b2cedfa7fc69150b42b1d6119aac3c
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
F ext/rtree/geopoly.c 98d45533989e908bf65b43f36ff6eaad95a9ffe6f3b6b8658fbd47d45c58b10b F ext/rtree/geopoly.c 98d45533989e908bf65b43f36ff6eaad95a9ffe6f3b6b8658fbd47d45c58b10b
F ext/rtree/rtree.c c9fa4fbe94b81cba5ef59bb29455f69883466acf18f42d4c4c4cbfb24b45e1c1 F ext/rtree/rtree.c 28e41882843e1e8702e29c83c5cc94a6e5bf40c1046623922f4cd743740efcc9
F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412 F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412
F ext/rtree/rtree1.test 00792b030a4e188ff1b22e8530e8aa0452bb5dd81c2b18cb004afc7dc63e040e F ext/rtree/rtree1.test 00792b030a4e188ff1b22e8530e8aa0452bb5dd81c2b18cb004afc7dc63e040e
F ext/rtree/rtree2.test 9d9deddbb16fd0c30c36e6b4fdc3ee3132d765567f0f9432ee71e1303d32603d F ext/rtree/rtree2.test 9d9deddbb16fd0c30c36e6b4fdc3ee3132d765567f0f9432ee71e1303d32603d
@@ -404,7 +404,7 @@ F ext/rtree/rtree6.test 9ce3691c1aac43070a9f194f0ebf54372db346c5a82241fd11b525ed
F ext/rtree/rtree7.test c8fb2e555b128dd0f0bdb520c61380014f497f8a23c40f2e820acc9f9e4fdce5 F ext/rtree/rtree7.test c8fb2e555b128dd0f0bdb520c61380014f497f8a23c40f2e820acc9f9e4fdce5
F ext/rtree/rtree8.test 2d99006a1386663978c9e1df167554671e4f711c419175b39f332719deb1ce0e F ext/rtree/rtree8.test 2d99006a1386663978c9e1df167554671e4f711c419175b39f332719deb1ce0e
F ext/rtree/rtree9.test c646f12c8c1c68ef015c6c043d86a0c42488e2e68ed1bb1b0771a7ca246cbabf F ext/rtree/rtree9.test c646f12c8c1c68ef015c6c043d86a0c42488e2e68ed1bb1b0771a7ca246cbabf
F ext/rtree/rtreeA.test ed2f1be9c06dde0b1ab93a95dd9e87eeaa02db2d30bcb4b9179b69ee3dc3319b F ext/rtree/rtreeA.test c0d8e91e25052d5f3fbda17632ca843b82ca13c4181fb6000a0d63bd2d7e70ce
F ext/rtree/rtreeB.test 4cec297f8e5c588654bbf3c6ed0903f10612be8a2878055dd25faf8c71758bc9 F ext/rtree/rtreeB.test 4cec297f8e5c588654bbf3c6ed0903f10612be8a2878055dd25faf8c71758bc9
F ext/rtree/rtreeC.test c4bfa9a61c6788c03e4a9ce40ab2cfc6100982559effd9842d1b658e1d47aa5f F ext/rtree/rtreeC.test c4bfa9a61c6788c03e4a9ce40ab2cfc6100982559effd9842d1b658e1d47aa5f
F ext/rtree/rtreeD.test fe46aa7f012e137bd58294409b16c0d43976c3bb92c8f710481e577c4a1100dc F ext/rtree/rtreeD.test fe46aa7f012e137bd58294409b16c0d43976c3bb92c8f710481e577c4a1100dc
@@ -1923,7 +1923,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P e66727837ddd5d1344c252323d52600b6138f5a2471f63d09b5a28ea2c22e595 P 9123f680ae3100f4c781ac4f5b8afac49bb5d4231b5931ad112b1b615f22f613
R a513462136e6f0bd93657ca06b3577a5 R aa32b780c45fbdfaa5c4a0c43e497966
U drh U drh
Z 846aaeee8ebb566018839ebc85ef258d Z 5cf9ad391dbbe3a117e87c8cd398587f

View File

@@ -1 +1 @@
9123f680ae3100f4c781ac4f5b8afac49bb5d4231b5931ad112b1b615f22f613 c74c07cc86443057d34284ae31eb68470741592b0e61072fd5e120e82919169b