]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix session module problems with real (floating point) values.
authordan <dan@noemail.net>
Mon, 21 Mar 2011 11:03:24 +0000 (11:03 +0000)
committerdan <dan@noemail.net>
Mon, 21 Mar 2011 11:03:24 +0000 (11:03 +0000)
FossilOrigin-Name: a192d04f4e3a9e4960a4d96d1d3ee8635bc1034d

ext/session/session2.test
ext/session/sqlite3session.c
manifest
manifest.uuid

index 453dc627a2cb3cff7ae90c91848a7823599ef64d..5411563f2efcf679f12c543e4191ff044a32acb8 100644 (file)
@@ -105,6 +105,11 @@ do_iterator_test 1.1 t1 {
   {DELETE t1 {t i t one} {}} 
   {INSERT t1 {} {t ii t two}}
 }
+do_iterator_test 1.1 t1 {
+  INSERT INTO t1 VALUES(1.5, 99.9)
+} {
+  {INSERT t1 {} {f 1.5 f 99.9}}
+}
 
 test_reset
 do_common_sql {
@@ -202,7 +207,10 @@ do_test 2.0 {
   } db2
 } {}
 
+proc xTrace {args} { puts $args }
+
 foreach {tn sql} {
+
   1 { INSERT INTO aux.t1 VALUES(1, 2) } 
 
   2 {
@@ -255,6 +263,12 @@ foreach {tn sql} {
       DELETE FROM aux.t1 WHERE 1;
     ROLLBACK;
   }
+  11 {
+    INSERT INTO aux.t1 VALUES(randomblob(21000), randomblob(0));
+    INSERT INTO aux.t1 VALUES(1.5, 1.5);
+    INSERT INTO aux.t1 VALUES(4.56, -99.999999999999999999999);
+  }
+
 } {
   do_then_apply_sql $sql aux
   do_test 2.$tn { compare_db db3 db2 } {}
index d934fad6a74cf4bcc21542ff71f3eee78a607b81..676ea3b44c7d0a214f97fe6110940f45d4249e74 100644 (file)
@@ -245,10 +245,10 @@ static int sessionSerializeValue(
       nByte = 9; 
       break;
 
-    case SQLITE_TEXT: 
-    case SQLITE_BLOB: {
+    default: {
       int n = sqlite3_value_bytes(pValue);
       int nVarint = sessionVarintLen(n);
+      assert( eType==SQLITE_TEXT || eType==SQLITE_BLOB );
       if( aBuf ){
         sessionVarintPut(&aBuf[1], n);
         memcpy(&aBuf[nVarint + 1], eType==SQLITE_TEXT ? 
@@ -1257,7 +1257,7 @@ static int sessionSelectBind(
           double rVal;
           i64 iVal = sessionGetI64(a);
           memcpy(&rVal, &iVal, 8);
-          rc = sqlite3_bind_int64(pSelect, i+1, rVal);
+          rc = sqlite3_bind_double(pSelect, i+1, rVal);
         }
         a += 8;
         break;
@@ -1481,7 +1481,7 @@ static int sessionReadRecord(
             sqlite3VdbeMemSetInt64(apOut[i], v);
           }else{
             double d;
-            memcpy(&d, &i, 8);
+            memcpy(&d, &v, 8);
             sqlite3VdbeMemSetDouble(apOut[i], d);
           }
         }
index b318127f95a1390a647504d982a9818bd152a000..46016a203462f97290a1698a3029544f099fac71 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\ssome\stypos\sin\ssqlite3session.h.
-D 2011-03-21T07:23:09
+C Fix\ssession\smodule\sproblems\swith\sreal\s(floating\spoint)\svalues.
+D 2011-03-21T11:03:25
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 27701a1653595a1f2187dc61c8117e00a6c1d50f
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -100,8 +100,8 @@ F ext/rtree/sqlite3rtree.h 1af0899c63a688e272d69d8e746f24e76f10a3f0
 F ext/rtree/tkt3363.test 142ab96eded44a3615ec79fba98c7bde7d0f96de
 F ext/rtree/viewrtree.tcl eea6224b3553599ae665b239bd827e182b466024
 F ext/session/session1.test 3f982c74ee4ba97069917cc35aae25b4ed858e6a
-F ext/session/session2.test 96ff08995ab9935d1992ac554a240052883a0ebc
-F ext/session/sqlite3session.c d211ce2e95483dfc144494f6c67879d85dddabfa
+F ext/session/session2.test 45c9ff2052bf132d25d272b1d4b53f95c1c31463
+F ext/session/sqlite3session.c 3ed836ee8c6faff866bc59da800b6f20b0285071
 F ext/session/sqlite3session.h b77b014793162a77ac16507d720fe085cc15d06c
 F ext/session/test_session.c 2559ef68e421c7fb83e2c19ef08a17343b70d535
 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
@@ -921,7 +921,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P f227f60210fba3930f3050aebb1facee8bac9c0b
-R 1d7fc8f92183ec1b52bc0fb00c30936f
+P 0853e530cc8d96f025f5160540e8ab3243dea11b
+R 482fc377ccc3f262af8beae8e4f384bf
 U dan
-Z c7cce5161a77eeb6aa8085cb909dead1
+Z 767fabeb255e365fd4d794b5ace5ff7b
index 781e099e42784877b8c5df49ac97af039e82de51..e7426fdf052646bae36560f22da82dc520a0fa91 100644 (file)
@@ -1 +1 @@
-0853e530cc8d96f025f5160540e8ab3243dea11b
\ No newline at end of file
+a192d04f4e3a9e4960a4d96d1d3ee8635bc1034d
\ No newline at end of file