Hi -

This has nothing to do with drivers or DF - simply MySQL.

I had code similar to the following in a stored procedure (simplified here):

Code:
        CREATE TEMPORARY TABLE tmp_Totals
        SELECT L.INVOICE, 
        0 AS TaxSubTotal,        
        SUM(L.Price) AS NoTaxSubTotal,
        SUM(L.Tax) AS Tax,
        SUM(L.Price + L.TAX) AS Total
        FROM lineitem L 
        WHERE # long where clause
        
        UPDATE tmp_Totals 
        SET TaxSubTotal = (SELECT SUM(lineitem.PRICE) FROM lineitem WHERE lineitem.INVOICE = tmp_Totals.invoice AND lineitem.TAX <> 0),
Turns out that the initial select determines the precision - so if the Sum selected in the update was 123.45, TaxSubTotal would be filled as 124.00 - yes, rounded up.

By doing it this way, it is now correct (filling with 123.45):

Code:
        CREATE TEMPORARY TABLE tmp_Totals
        SELECT L.INVOICE, 
        000000000.00 AS TaxSubTotal,        # must have correct precision!  
        SUM(L.Price) AS NoTaxSubTotal,
        SUM(L.Tax) AS Tax,
        SUM(L.Price + L.TAX) AS Total
        FROM lineitem L 
        WHERE # long where clause

        UPDATE tmp_Totals 
        SET TaxSubTotal = (SELECT SUM(lineitem.PRICE) FROM lineitem WHERE lineitem.INVOICE = tmp_Totals.invoice AND lineitem.TAX <> 0),
Using 0.00 doesn't work either - it fills the column with 1.45

Hopefully this saves someone some time debugging!