]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
visit_DECIMAL should include precision and scale (when provided) just like visit_NUME...
authorDiana Clarke <diana.joan.clarke@gmail.com>
Mon, 3 Dec 2012 12:40:00 +0000 (07:40 -0500)
committerDiana Clarke <diana.joan.clarke@gmail.com>
Mon, 3 Dec 2012 12:40:00 +0000 (07:40 -0500)
lib/sqlalchemy/sql/compiler.py
test/sql/test_types.py

index 102b44a7e3c3bf0a3e311129d0a94a4983a4856a..215ecf7bde2944ea443cffbc67b2fccd553bd4da 100644 (file)
@@ -2084,7 +2084,15 @@ class GenericTypeCompiler(engine.TypeCompiler):
                         'scale': type_.scale}
 
     def visit_DECIMAL(self, type_):
-        return "DECIMAL"
+        if type_.precision is None:
+            return "DECIMAL"
+        elif type_.scale is None:
+            return "DECIMAL(%(precision)s)" % \
+                        {'precision': type_.precision}
+        else:
+            return "DECIMAL(%(precision)s, %(scale)s)" % \
+                        {'precision': type_.precision,
+                        'scale': type_.scale}
 
     def visit_INTEGER(self, type_):
         return "INTEGER"
index f9ab785edaa23c018f28a8a5d5303c2f7d235f2d..8987743d4a8ef17b424604d75dd1e7eaee81f45e 100644 (file)
@@ -1306,6 +1306,23 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
                 dialects.mysql.INTEGER(display_width=5), "INTEGER(5)",
                 allow_dialect_select=True)
 
+    def test_numeric_plain(self):
+        self.assert_compile(types.NUMERIC(), 'NUMERIC')
+
+    def test_numeric_precision(self):
+        self.assert_compile(types.NUMERIC(2), 'NUMERIC(2)')
+
+    def test_numeric_scale(self):
+        self.assert_compile(types.NUMERIC(2, 4), 'NUMERIC(2, 4)')
+
+    def test_decimal_plain(self):
+        self.assert_compile(types.DECIMAL(), 'DECIMAL')
+
+    def test_decimal_precision(self):
+        self.assert_compile(types.DECIMAL(2), 'DECIMAL(2)')
+
+    def test_decimal_scale(self):
+        self.assert_compile(types.DECIMAL(2, 4), 'DECIMAL(2, 4)')