[fpc-pascal] Decimal Precision Issue with Firebird
Joost van der Sluis
joost at cnoc.nl
Mon Jan 26 11:10:05 CET 2009
Op maandag 26-01-2009 om 09:13 uur [tijdzone +0100], schreef Michael Van
> On Sun, 25 Jan 2009, Andrew Hall wrote:
> > We are having problems reading decimal/numeric column types with TSQLQuery.
> > It appears if the precision of a decimal/numeric is more than 4 (for instance,
> > DECIMAL(12,8) or DECIMAL(18,10) or DECIMAL(10,6) TSQLQuery raises an exception
> > on reading - EDatabaseError : Unknown field type : COLUMN_NAME. However, using
> > the established (informal) money-types for Firebird - DECIMAL(18,4) or
> > DECIMAL(10,4) are OK, and multiple other variations are OK if precision is 4
> > or less.
> > Questions:
> > 1) is this a bug, or a known "feature" or limitation of the FPC Firebird
> > library?
> It is a limitation.
Not only of the Firebird components, but all db-components. There's no
support for real BCD fields. But now the fmtbcd unit has been added to
fpc it's a trivial task to add it.
> > 2) is there a workaround? We require a decimal with at least 9 decimal places
> > precision (?perhaps DOUBLE PRECISION)
> I think double precision is your only option at this point.
> > 3) the issue with negative numerics with TSQLQuery being treated as unsigned,
> > described in the bug list as fixed in FPC 231 - has this fix been moved to FPC
> > 224?
> I think it has, but Joost should confirm that.
Not yet. We have to release rc1 first.
More information about the fpc-pascal