]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Increase the precision of integer vs. floating-point comparisons.
authordrh <drh@noemail.net>
Fri, 6 Nov 2015 01:04:41 +0000 (01:04 +0000)
committerdrh <drh@noemail.net>
Fri, 6 Nov 2015 01:04:41 +0000 (01:04 +0000)
Candidate fix for ticket [38a97a87a6e4e8].

FossilOrigin-Name: cfcaa0ff276b1936418abe72c7e0c99d90d37885

manifest
manifest.uuid
src/vdbeaux.c

index daf44cfd735ea6b4e4794cac5fd3defefc0a21b7..12e3f8713591da9c6ac5433c6ce8e27603e437ca 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\stypo\sin\shelp\sinformation\sfor\san\sFTS5\sscript.
-D 2015-11-05T21:49:19.879
+C Increase\sthe\sprecision\sof\sinteger\svs.\sfloating-point\scomparisons.\nCandidate\sfix\sfor\sticket\s[38a97a87a6e4e8].
+D 2015-11-06T01:04:41.562
 F Makefile.in 3a705bb4bd12e194212ddbdbf068310d17153cdb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 702d3e98f3afc6587a78481257f3c4c900efc3a4
@@ -407,7 +407,7 @@ F src/vdbe.c dfbaae2570172c523bce14299021d352b8508f7f
 F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637
 F src/vdbeInt.h 33403622c6a8feaaac5f0f3f17f5d1bf6df42286
 F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca
-F src/vdbeaux.c 717bc2ae9cc0b58ef398fff44bd9164bfd96772a
+F src/vdbeaux.c debf7e021cf9008c65319da75f293f1edc1172cb
 F src/vdbeblob.c 565fabd302f5fca3bdf3d56cac330483616a39b6
 F src/vdbemem.c fdd1578e47bea61390d472de53c565781d81e045
 F src/vdbesort.c 8b23930a1289526f6d2a3a9f2e965bcc963e4a68
@@ -1398,7 +1398,10 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 445480095e6877cce8220b1c095f334bbb04c1c3
-R 68d01af6e20ce1ec369a81a5012243d6
-U mistachkin
-Z 34f3b0f0379f36a413653d60c651c6ba
+P 777ae8007f6ff303b120b25f2dc37d7ef6b6a4f8
+R cc9765cd257243db22c6bd69c3d99131
+T *branch * int-float-precision
+T *sym-int-float-precision *
+T -sym-trunk *
+U drh
+Z d0948553cd93aaec56b5aa2032a41416
index 1f1b6d3fb2d331b861ec4b105c6bffe99bb18f0a..4dab4a3e5bba77a335180932384a7a86e95352b2 100644 (file)
@@ -1 +1 @@
-777ae8007f6ff303b120b25f2dc37d7ef6b6a4f8
\ No newline at end of file
+cfcaa0ff276b1936418abe72c7e0c99d90d37885
\ No newline at end of file
index f605ea3ec8513de49a712a1bfbc128620d4fc01a..9b3b1be874627361997fdc9589dedbb18d8478f7 100644 (file)
@@ -3665,7 +3665,7 @@ int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){
   ** if both values are integers.
   */
   if( combined_flags&(MEM_Int|MEM_Real) ){
-    double r1, r2;
+    LONGDOUBLE_TYPE r1, r2;
     if( (f1 & f2 & MEM_Int)!=0 ){
       if( pMem1->u.i < pMem2->u.i ) return -1;
       if( pMem1->u.i > pMem2->u.i ) return 1;
@@ -3674,14 +3674,14 @@ int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){
     if( (f1&MEM_Real)!=0 ){
       r1 = pMem1->u.r;
     }else if( (f1&MEM_Int)!=0 ){
-      r1 = (double)pMem1->u.i;
+      r1 = (LONGDOUBLE_TYPE)pMem1->u.i;
     }else{
       return 1;
     }
     if( (f2&MEM_Real)!=0 ){
       r2 = pMem2->u.r;
     }else if( (f2&MEM_Int)!=0 ){
-      r2 = (double)pMem2->u.i;
+      r2 = (LONGDOUBLE_TYPE)pMem2->u.i;
     }else{
       return -1;
     }
@@ -3838,7 +3838,7 @@ int sqlite3VdbeRecordCompareWithSkip(
       }else if( serial_type==0 ){
         rc = -1;
       }else if( serial_type==7 ){
-        double rhs = (double)pRhs->u.i;
+        LONGDOUBLE_TYPE rhs = (LONGDOUBLE_TYPE)pRhs->u.i;
         sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);
         if( mem1.u.r<rhs ){
           rc = -1;
@@ -3868,13 +3868,13 @@ int sqlite3VdbeRecordCompareWithSkip(
       }else if( serial_type==0 ){
         rc = -1;
       }else{
-        double rhs = pRhs->u.r;
-        double lhs;
+        LONGDOUBLE_TYPE rhs = pRhs->u.r;
+        LONGDOUBLE_TYPE lhs;
         sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);
         if( serial_type==7 ){
           lhs = mem1.u.r;
         }else{
-          lhs = (double)mem1.u.i;
+          lhs = (LONGDOUBLE_TYPE)mem1.u.i;
         }
         if( lhs<rhs ){
           rc = -1;