From 9933faa0e8594b856793414015a68d578a9e881b Mon Sep 17 00:00:00 2001 From: Kenichi Ishigaki Date: Fri, 27 Apr 2012 06:46:23 +0000 Subject: [PATCH] storing an (overflowed) integer as a double is apparently a bad idea; store it as a text to allow perl to convert it dynamically --- dbdimp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dbdimp.c b/dbdimp.c index 1e34685..d4080bb 100644 --- a/dbdimp.c +++ b/dbdimp.c @@ -906,7 +906,13 @@ sqlite_st_fetch(SV *sth, imp_sth_t *imp_sth) #if defined(USE_64_BIT_INT) sv_setiv(AvARRAY(av)[i], sqlite3_column_int64(imp_sth->stmt, i)); #else - sv_setnv(AvARRAY(av)[i], (double)sqlite3_column_int64(imp_sth->stmt, i)); + val = (char*)sqlite3_column_text(imp_sth->stmt, i); + if (sqlite_is_number(aTHX_ val, TRUE) == 1) { + sv_setiv(AvARRAY(av)[i], atoi(val)); + } else { + sv_setpv(AvARRAY(av)[i], val); + SvUTF8_off(AvARRAY(av)[i]); + } #endif break; case SQLITE_FLOAT: