LSM1: Fix the integer key encoding so that negative keys are in numeric order.

FossilOrigin-Name: f92dc4187f6046fcb3ab63449efd7f3738594adc
This commit is contained in:
drh 2016-02-24 13:35:22 +00:00
parent 6627fd6126
commit 16b7dcc717
3 changed files with 12 additions and 16 deletions

View File

@ -379,7 +379,7 @@ static int lsm1EncodeKey(
sqlite3_uint64 uVal;
if( iVal<0 ){
if( iVal==0xffffffffffffffffLL ) return SQLITE_ERROR;
uVal = -iVal;
uVal = *(sqlite3_uint64*)&iVal;
eType = LSM1_TYPE_NEGATIVE;
}else{
uVal = iVal;
@ -424,16 +424,12 @@ static int lsm1Column(
}else if( pVal[0]==LSM1_TYPE_TEXT ){
sqlite3_result_text(ctx, (const char*)&pVal[1],nVal-1,
SQLITE_TRANSIENT);
}else if( nVal>=2 && nVal<=9 &&
}else if( nVal>=2 && nVal<=10 &&
(pVal[0]==LSM1_TYPE_POSITIVE || pVal[0]==LSM1_TYPE_NEGATIVE)
){
sqlite3_uint64 uVal = 0;
lsm1GetVarint64(pVal+1, nVal-1, &uVal);
if( pVal[0]==LSM1_TYPE_NEGATIVE ){
sqlite3_result_int64(ctx, -(sqlite3_int64)uVal);
}else{
sqlite3_result_int64(ctx, (sqlite3_int64)uVal);
}
sqlite3_int64 iVal;
lsm1GetVarint64(pVal+1, nVal-1, (sqlite3_uint64*)&iVal);
sqlite3_result_int64(ctx, iVal);
}
}
break;

View File

@ -1,5 +1,5 @@
C Merge\strunk\senhancements.
D 2016-02-23T01:41:35.494
C LSM1:\sFix\sthe\sinteger\skey\sencoding\sso\sthat\snegative\skeys\sare\sin\snumeric\sorder.
D 2016-02-24T13:35:22.043
F Makefile.in 4e90dc1521879022aa9479268a4cd141d1771142
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 28fc4ee02333996d31b3602b39eeb8e609a89ce4
@ -215,7 +215,7 @@ F ext/lsm1/lsm_str.c 77ebdd5040ddf267a6f724d4c83132d2dce8a226
F ext/lsm1/lsm_tree.c 5d9fb2bc58a1a70c75126bd8d7198f7b627e165b
F ext/lsm1/lsm_unix.c fcaf5b6738713f1229dc0e1a90393ecf24f787f2
F ext/lsm1/lsm_varint.c b19ae9bd26b5a1e8402fb8a564b25d9542338a41
F ext/lsm1/lsm_vtab.c f7fb6c185ebd5dcf70f676886e28799afa72424e
F ext/lsm1/lsm_vtab.c fff303ce03168eca9e333add3c1429b3471674b0
F ext/misc/amatch.c a1a8f66c29d40bd71b075546ddeddb477b17a2bb
F ext/misc/closure.c 0d2a038df8fbae7f19de42e7c7d71f2e4dc88704
F ext/misc/compress.c 122faa92d25033d6c3f07c39231de074ab3d2e83
@ -1445,7 +1445,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh a98af506df552f3b3c0d904f94e4cdc4e1a6d598
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 32f3daec0a8084b258b2513c8025bc4d95a5d757 aa9f4c622af191edbeb6a535942944f8c91f5c37
R 03319de6b06f1ae4f2324c01efdb9598
P fac4f4ecee21a460e527a0e2ffa24094b74e17dd
R 9f78396a287b58b8dc55076320f7b772
U drh
Z 7e07aa1e426a3abb50d562fbcc7f53c0
Z 4d07009afed81bdff10146a4248806a2

View File

@ -1 +1 @@
fac4f4ecee21a460e527a0e2ffa24094b74e17dd
f92dc4187f6046fcb3ab63449efd7f3738594adc