[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
Canneyt:
> 
> 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.

Joost.




More information about the fpc-pascal mailing list