1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

R-TREE optimization: unwrap the coordinate decode loop in

rtreeCallbackConstraint().

FossilOrigin-Name: 0bf7b51896ec441f62490964c7a44a3c75c6b7e2
This commit is contained in:
drh
2017-01-31 21:22:03 +00:00
parent a4613e1f4c
commit fcbd6cdb41
3 changed files with 14 additions and 11 deletions

View File

@ -966,10 +966,14 @@ static int rtreeCallbackConstraint(
if( pConstraint->op==RTREE_QUERY && pSearch->iLevel==1 ){
pInfo->iRowid = readInt64(pCellData);
}
pCellData += 8;
for(i=0; i<nCoord; i++, pCellData += 4){
assert( nCoord>=2 && (nCoord&1)==0 );
i = 0;
do{
pCellData += 8;
RTREE_DECODE_COORD(eInt, pCellData, aCoord[i]);
}
RTREE_DECODE_COORD(eInt, (pCellData+4), aCoord[i+1]);
i+= 2;
}while( i<nCoord );
if( pConstraint->op==RTREE_MATCH ){
rc = pConstraint->u.xGeom((sqlite3_rtree_geometry*)pInfo,
nCoord, aCoord, &i);