Fix session module problems with real (floating point) values.

FossilOrigin-Name: a192d04f4e3a9e4960a4d96d1d3ee8635bc1034d
This commit is contained in:
dan 2011-03-21 11:03:24 +00:00
parent 77e6500473
commit 4e895da185
4 changed files with 26 additions and 12 deletions

View 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 } {}

View 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);
}
}

View File

@ -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

View File

@ -1 +1 @@
0853e530cc8d96f025f5160540e8ab3243dea11b
a192d04f4e3a9e4960a4d96d1d3ee8635bc1034d