mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix the generation of sqlite3_rtree_query_info.iRowid and add test cases
to verify that it is fixed. FossilOrigin-Name: eba95ead49f8f8ce45d400186562ff0066537c5c
This commit is contained in:
@ -962,7 +962,7 @@ static int rtreeCallbackConstraint(
|
|||||||
assert( pConstraint->op==RTREE_MATCH || pConstraint->op==RTREE_QUERY );
|
assert( pConstraint->op==RTREE_MATCH || pConstraint->op==RTREE_QUERY );
|
||||||
assert( nCoord==2 || nCoord==4 || nCoord==6 || nCoord==8 || nCoord==10 );
|
assert( nCoord==2 || nCoord==4 || nCoord==6 || nCoord==8 || nCoord==10 );
|
||||||
|
|
||||||
if( pConstraint->op==RTREE_MATCH && pSearch->iLevel==1 ){
|
if( pConstraint->op==RTREE_QUERY && pSearch->iLevel==1 ){
|
||||||
pInfo->iRowid = readInt64(pCellData);
|
pInfo->iRowid = readInt64(pCellData);
|
||||||
}
|
}
|
||||||
pCellData += 8;
|
pCellData += 8;
|
||||||
|
@ -67,6 +67,16 @@ do_execsql_test rtreeE-1.4 {
|
|||||||
SELECT id FROM rt1 WHERE id MATCH Qcircle(0,0,1000,3) AND id%100==0
|
SELECT id FROM rt1 WHERE id MATCH Qcircle(0,0,1000,3) AND id%100==0
|
||||||
} {200 100 0}
|
} {200 100 0}
|
||||||
|
|
||||||
|
# Exclude odd rowids on a depth-first search
|
||||||
|
do_execsql_test rtreeE-1.5 {
|
||||||
|
SELECT id FROM rt1 WHERE id MATCH Qcircle(0,0,1000,4) ORDER BY +id
|
||||||
|
} {0 2 4 6 8 10 12 14 16 18 20 22 24 100 102 104 106 108 110 112 114 116 118 120 122 124 200 202 204 206 208 210 212 214 216 218 220 222 224}
|
||||||
|
|
||||||
|
# Exclude odd rowids on a breadth-first search.
|
||||||
|
do_execsql_test rtreeE-1.6 {
|
||||||
|
SELECT id FROM rt1 WHERE id MATCH Qcircle(0,0,1000,5) ORDER BY +id
|
||||||
|
} {0 2 4 6 8 10 12 14 16 18 20 22 24 100 102 104 106 108 110 112 114 116 118 120 122 124 200 202 204 206 208 210 212 214 216 218 220 222 224}
|
||||||
|
|
||||||
# Construct a large 2-D RTree with thousands of random entries.
|
# Construct a large 2-D RTree with thousands of random entries.
|
||||||
#
|
#
|
||||||
do_test rtreeE-2.1 {
|
do_test rtreeE-2.1 {
|
||||||
|
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
|||||||
C Be\ssure\sto\sinitialize\sthe\ssqlite3_rtree_query_info.iRowid\sfield\sfor\sthe\nleaves\sof\sthe\sR-Tree\swhen\sdoing\sa\squery\scallback\ssearch.
|
C Fix\sthe\sgeneration\sof\ssqlite3_rtree_query_info.iRowid\sand\sadd\stest\scases\nto\sverify\sthat\sit\sis\sfixed.
|
||||||
D 2014-04-21T15:53:45.432
|
D 2014-04-21T18:13:37.363
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in e4ee6d36cdf6136aee0158675a3b24dd3bf31a5a
|
F Makefile.in e4ee6d36cdf6136aee0158675a3b24dd3bf31a5a
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@ -120,7 +120,7 @@ F ext/misc/vfslog.c fe40fab5c077a40477f7e5eba994309ecac6cc95
|
|||||||
F ext/misc/vtshim.c babb0dc2bf116029e3e7c9a618b8a1377045303e
|
F ext/misc/vtshim.c babb0dc2bf116029e3e7c9a618b8a1377045303e
|
||||||
F ext/misc/wholenumber.c 784b12543d60702ebdd47da936e278aa03076212
|
F ext/misc/wholenumber.c 784b12543d60702ebdd47da936e278aa03076212
|
||||||
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
|
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
|
||||||
F ext/rtree/rtree.c 2474c438614edfc171bd9a85e3374f732511d962
|
F ext/rtree/rtree.c 77fdd459e7edf78a385a83930e2b072b2f0131b5
|
||||||
F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
|
F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
|
||||||
F ext/rtree/rtree1.test e2da4aaa426918d27122d1a1066c6ecf8409a514
|
F ext/rtree/rtree1.test e2da4aaa426918d27122d1a1066c6ecf8409a514
|
||||||
F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
|
F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
|
||||||
@ -135,7 +135,7 @@ F ext/rtree/rtreeA.test ace05e729a36e342d40cf94e9efc7b4723d9dcdf
|
|||||||
F ext/rtree/rtreeB.test c85f9ce78766c4e68b8b89fbf2979ee9cfa82b4e
|
F ext/rtree/rtreeB.test c85f9ce78766c4e68b8b89fbf2979ee9cfa82b4e
|
||||||
F ext/rtree/rtreeC.test df158dcc81f1a43ce7eef361af03c48ec91f1e06
|
F ext/rtree/rtreeC.test df158dcc81f1a43ce7eef361af03c48ec91f1e06
|
||||||
F ext/rtree/rtreeD.test 636630357638f5983701550b37f0f5867130d2ca
|
F ext/rtree/rtreeD.test 636630357638f5983701550b37f0f5867130d2ca
|
||||||
F ext/rtree/rtreeE.test 0878fd6bce3a62ac980e6f67ba14cc86c8f4f2b3
|
F ext/rtree/rtreeE.test 388c1c8602c3ce55c15f03b509e9cf545fb7c41f
|
||||||
F ext/rtree/rtree_perf.tcl 6c18c1f23cd48e0f948930c98dfdd37dfccb5195
|
F ext/rtree/rtree_perf.tcl 6c18c1f23cd48e0f948930c98dfdd37dfccb5195
|
||||||
F ext/rtree/rtree_util.tcl 06aab2ed5b826545bf215fff90ecb9255a8647ea
|
F ext/rtree/rtree_util.tcl 06aab2ed5b826545bf215fff90ecb9255a8647ea
|
||||||
F ext/rtree/sqlite3rtree.h 488cf8834d2012b913d33683157d3cf5f1327a69
|
F ext/rtree/sqlite3rtree.h 488cf8834d2012b913d33683157d3cf5f1327a69
|
||||||
@ -275,7 +275,7 @@ F src/test_osinst.c 90a845c8183013d80eccb1f29e8805608516edba
|
|||||||
F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
|
F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
|
||||||
F src/test_quota.c 30c64f0ef84734f2231a686df41ed882b0c59bc0
|
F src/test_quota.c 30c64f0ef84734f2231a686df41ed882b0c59bc0
|
||||||
F src/test_quota.h 8761e463b25e75ebc078bd67d70e39b9c817a0cb
|
F src/test_quota.h 8761e463b25e75ebc078bd67d70e39b9c817a0cb
|
||||||
F src/test_rtree.c 4c1ff96a2d3a84e6a12fe8643e6d46dae0ef11de
|
F src/test_rtree.c fdd8d29ca5165c7857987a2ba263fac5c69e231f
|
||||||
F src/test_schema.c cd12a2223c3a394f4d07bb93bdf6d344c5c121b6
|
F src/test_schema.c cd12a2223c3a394f4d07bb93bdf6d344c5c121b6
|
||||||
F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe
|
F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe
|
||||||
F src/test_sqllog.c c1c1bbedbcaf82b93d83e4f9dd990e62476a680e
|
F src/test_sqllog.c c1c1bbedbcaf82b93d83e4f9dd990e62476a680e
|
||||||
@ -1177,7 +1177,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
|
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
|
||||||
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
|
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
|
||||||
P d708f159abfb3b87e2844463088d4fb7f8da9c97
|
P 4394693882c04c19ebe87ef7547c57e679554397
|
||||||
R b6276022832016ce4c25e5317a578a57
|
R 9a6527f0d42b13ef1dcd87b1f989aba6
|
||||||
U drh
|
U drh
|
||||||
Z 8b38b422713df2439dae120af50d35b5
|
Z 8819b772d7d2f245af8d8a9675d9c9d8
|
||||||
|
@ -1 +1 @@
|
|||||||
4394693882c04c19ebe87ef7547c57e679554397
|
eba95ead49f8f8ce45d400186562ff0066537c5c
|
@ -255,7 +255,7 @@ static int circle_query_func(sqlite3_rtree_query_info *p){
|
|||||||
}else if( pCircle->eScoreType==2 ){
|
}else if( pCircle->eScoreType==2 ){
|
||||||
/* Breadth first search */
|
/* Breadth first search */
|
||||||
p->rScore = 100 - p->iLevel;
|
p->rScore = 100 - p->iLevel;
|
||||||
}else{
|
}else if( pCircle->eScoreType==3 ){
|
||||||
/* Depth-first search, except sort the leaf nodes by area with
|
/* Depth-first search, except sort the leaf nodes by area with
|
||||||
** the largest area first */
|
** the largest area first */
|
||||||
if( p->iLevel==1 ){
|
if( p->iLevel==1 ){
|
||||||
@ -264,6 +264,14 @@ static int circle_query_func(sqlite3_rtree_query_info *p){
|
|||||||
}else{
|
}else{
|
||||||
p->rScore = 0.0;
|
p->rScore = 0.0;
|
||||||
}
|
}
|
||||||
|
}else if( pCircle->eScoreType==4 ){
|
||||||
|
/* Depth-first search, except exclude odd rowids */
|
||||||
|
p->rScore = p->iLevel;
|
||||||
|
if( p->iRowid&1 ) nWithin = 0;
|
||||||
|
}else{
|
||||||
|
/* Breadth-first search, except exclude odd rowids */
|
||||||
|
p->rScore = 100 - p->iLevel;
|
||||||
|
if( p->iRowid&1 ) nWithin = 0;
|
||||||
}
|
}
|
||||||
if( nWithin==0 ){
|
if( nWithin==0 ){
|
||||||
p->eWithin = NOT_WITHIN;
|
p->eWithin = NOT_WITHIN;
|
||||||
|
Reference in New Issue
Block a user