[BUG] doubles being truncated in db resultsets on Android
I make a DB and copy it to the Resources dir:
twitch% sqlite ~/foo.db
-- Loading resources from /home/dae/.sqliterc
SQLite version 3.6.16
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table foo(col numeric(10,2));
sqlite> insert into foo values (12345678.9123456);
sqlite> insert into foo values (128058.889475825);
Run the following code:
var db = Ti.Database.install("foo.db", "androidbug");
var r = db.execute("select col from foo");
while (r && r.isValidRow()) {
Ti.API.info(r.field(0));
r.next();
}
On the iPhone it prints the correct values as expected. On Android the numbers are off:
[INFO] [10,997] 1.23457e+07
[INFO] [2,999] 128059
Looking at titanium_mobile/android/modules/database/src/ti/modules/titanium/database/TiResultSetProxy.java, it seems that all results are being obtained with getString(). Perhaps getString() is casting the result as a single-precision float? There is also a getDouble() method, so some sort of auto-detection magic may be necessary here.