]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- The "asdecimal" flag used with the :class:`.Float` type will now
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 27 Dec 2013 18:16:48 +0000 (13:16 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 27 Dec 2013 18:41:46 +0000 (13:41 -0500)
work with Firebird dialects; previously the decimal conversion was
not occurring.
- scale back some firebird FP numeric tests

Conflicts:
test/requirements.py

doc/build/changelog/changelog_08.rst
lib/sqlalchemy/dialects/firebird/kinterbasdb.py
test/requirements.py

index 6a9c5b1ba789a57a2758da252d1aa737a4ae444d..85716444ba565e16be5d26c425f5ad9bb59e75f2 100644 (file)
 .. changelog::
     :version: 0.8.5
 
+    .. change::
+        :tags: bug, firebird
+        :versions: 0.9.0b2
+
+        The "asdecimal" flag used with the :class:`.Float` type will now
+        work with Firebird dialects; previously the decimal conversion was
+        not occurring.
+
     .. change::
         :tags: bug, mssql, pymssql
         :versions: 0.9.0b2
index 9fdddfdb01b5e2d7e36d884fec414d450dbc4d60..c9558cc6b329c25033de64ea67db78576142e204 100644 (file)
@@ -42,7 +42,7 @@ from re import match
 import decimal
 
 
-class _FBNumeric_kinterbasdb(sqltypes.Numeric):
+class _kinterbasdb_numeric(object):
     def bind_processor(self, dialect):
         def process(value):
             if isinstance(value, decimal.Decimal):
@@ -51,6 +51,12 @@ class _FBNumeric_kinterbasdb(sqltypes.Numeric):
                 return value
         return process
 
+class _FBNumeric_kinterbasdb(_kinterbasdb_numeric, sqltypes.Numeric):
+    pass
+
+class _FBFloat_kinterbasdb(_kinterbasdb_numeric, sqltypes.Float):
+    pass
+
 
 class FBExecutionContext_kinterbasdb(FBExecutionContext):
     @property
@@ -74,6 +80,7 @@ class FBDialect_kinterbasdb(FBDialect):
         FBDialect.colspecs,
         {
             sqltypes.Numeric: _FBNumeric_kinterbasdb,
+            sqltypes.Float: _FBFloat_kinterbasdb,
         }
 
     )
index 081ae0e091e81f38894f67ab8e206cfe01af7406..7bf2c664145fedb65672aa9695c1fa4f331b21c9 100644 (file)
@@ -548,6 +548,26 @@ class DefaultRequirements(SuiteRequirements):
                 ]
                 )
 
+    @property
+    def precision_generic_float_type(self):
+        """target backend will return native floating point numbers with at
+        least seven decimal places when using the generic Float type."""
+
+        return fails_if([
+                    ('mysql', None, None,
+                                'mysql FLOAT type only returns 4 decimals'),
+                    ('firebird', None, None,
+                                "firebird FLOAT type isn't high precision"),
+                ])
+
+    @property
+    def floats_to_four_decimals(self):
+        return fails_if([
+                    ("mysql+oursql", None, None, "Floating point error"),
+                    ("firebird", None, None,
+                        "Firebird still has FP inaccuracy even "
+                        "with only four decimal places")
+                ])
 
     @property
     def python2(self):