From: | <noreply(at)pgfoundry(dot)org> |
---|---|
To: | noreply(at)pgfoundry(dot)org |
Subject: | [ psqlodbc-Bugs-1010515 ] Small negative decimal values are mistaken for non-negative |
Date: | 2008-11-28 11:32:47 |
Message-ID: | 20081128113247.97DE417ADE26@pgfoundry.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
Bugs item #1010515, was opened at 2008-11-28 11:32
You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=1010515&group_id=1000125
Category: None
Group: None
Status: Open
Resolution: None
Priority: 3
Submitted By: Dominic Smith (dominic_smith)
Assigned to: Nobody (None)
Summary: Small negative decimal values are mistaken for non-negative
Initial Comment:
I originally found this problem in an older snapshot of 8.02.0400, however it seems to still exist in the current CVS copy.
In the method ResolveNumericParam (convert.c), there is a problem where resolving decimal values between 0 and -1, as they will be mistaken for being positive.
e.g. -0.01 becomes 0.01.
The problem is based on lines 3259:3262. The code in question:
o1val = ival / div;
o2val = ival % div;
if(0 == ns->sign)
olval *= -1;
The problem here is, in the case of -0.01, o1val is 0, and so 0 * -1 is still zero. When you come to format this as
sprintf(chrform, "%d.%0*d", o1val, ns->scale, o2val);
we quite obviously lose the negative sign in the value.
A very small aside, and a rather selfish request perhaps, the method 'trim()' in misc.c - is there any possibility of renaming this method (or at least make it static to 'connection.c' which is the only module that calls this) - the name is very common, and causes problems when the driver is dl_open()'d.
----------------------------------------------------------------------
You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=1010515&group_id=1000125
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2008-11-28 12:55:26 | Re: [ psqlodbc-Bugs-1010515 ] Small negative decimal values are mistaken for non-negative |
Previous Message | noreply | 2008-11-28 11:11:20 | [ psqlodbc-Bugs-1002054 ] SQLSetDescField with SQL_DESC_INDICATOR_PTR has no effect. |