diff options
author | drh <drh@noemail.net> | 2014-03-04 04:12:56 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2014-03-04 04:12:56 +0000 |
commit | d34ab07507de47f6ec6c5f8e39a68f01aff4dce8 (patch) | |
tree | fd609b74427efc26463c2f27d624cc695bb6d01a /src/where.c | |
parent | 6295524e3ddfbcb77bd7a4eed20702c5443464d3 (diff) | |
parent | f926d1ea47939fe1c60d04bcf269b4ad6c1f50a1 (diff) | |
download | sqlite-d34ab07507de47f6ec6c5f8e39a68f01aff4dce8.tar.gz sqlite-d34ab07507de47f6ec6c5f8e39a68f01aff4dce8.zip |
Refactor the sqlite3VdbeRecordCompare() routine used to compare btree records.
Create fast-track special case routines to handle the common cases more
quickly. This gives a significant performance boost.
FossilOrigin-Name: 3325ad5bdc2f81f63b556d6f4d0589d89b142b2b
Diffstat (limited to 'src/where.c')
-rw-r--r-- | src/where.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/where.c b/src/where.c index f13d2b504..c29c94ae0 100644 --- a/src/where.c +++ b/src/where.c @@ -1913,7 +1913,7 @@ static void whereKeyStats( assert( pRec->nField>0 && iCol<pIdx->nSampleCol ); do{ iTest = (iMin+i)/2; - res = sqlite3VdbeRecordCompare(aSample[iTest].n, aSample[iTest].p, pRec); + res = sqlite3VdbeRecordCompare(aSample[iTest].n, aSample[iTest].p, pRec, 0); if( res<0 ){ iMin = iTest+1; }else{ @@ -1928,16 +1928,16 @@ static void whereKeyStats( if( res==0 ){ /* If (res==0) is true, then sample $i must be equal to pRec */ assert( i<pIdx->nSample ); - assert( 0==sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec) + assert( 0==sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec, 0) || pParse->db->mallocFailed ); }else{ /* Otherwise, pRec must be smaller than sample $i and larger than ** sample ($i-1). */ assert( i==pIdx->nSample - || sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec)>0 + || sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec, 0)>0 || pParse->db->mallocFailed ); assert( i==0 - || sqlite3VdbeRecordCompare(aSample[i-1].n, aSample[i-1].p, pRec)<0 + || sqlite3VdbeRecordCompare(aSample[i-1].n, aSample[i-1].p, pRec, 0)<0 || pParse->db->mallocFailed ); } #endif /* ifdef SQLITE_DEBUG */ |