Database columns containing floating point and double values are not handled correctly; they are handled as ints. Fix this.
Signed-off-by: Linas Vepstas <[EMAIL PROTECTED]>
---
src/guile-dbd-postgresql.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
Index: guile-dbd-postgresql-2.0.0/src/guile-dbd-postgresql.c
===================================================================
--- guile-dbd-postgresql-2.0.0.orig/src/guile-dbd-postgresql.c 2008-09-15
10:22:59.000000000 -0500
+++ guile-dbd-postgresql-2.0.0/src/guile-dbd-postgresql.c 2008-09-15
10:33:54.000000000 -0500
@@ -311,8 +311,6 @@ __postgresql_getrow_g_db_handle(gdbi_db_
SCM value;
int type = PQftype(pgsqlP->res,f);
if ((type >= 20 && type <= 24) ||
- type == 700 ||
- type == 701 ||
type == 1700 ||
type == 26 )
{
@@ -320,6 +318,13 @@ __postgresql_getrow_g_db_handle(gdbi_db_
PQgetlength(pgsqlP->res,pgsqlP->lget,f));
value = scm_int2num(atoi(value_str));
}
+ else if (type == 700 ||
+ type == 701 )
+ {
+ value_str = (char*) strndup(PQgetvalue(pgsqlP->res,pgsqlP->lget,f),
+ PQgetlength(pgsqlP->res,pgsqlP->lget,f));
+ value = scm_from_double(atof(value_str));
+ }
else if (type == 18 ||
type == 19 ||
type == 25 ||
signature.asc
Description: Digital signature
