]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
restore clipping value for YEAR DDL
authorJason Kirtland <jek@discorporate.us>
Thu, 9 Aug 2007 19:03:42 +0000 (19:03 +0000)
committerJason Kirtland <jek@discorporate.us>
Thu, 9 Aug 2007 19:03:42 +0000 (19:03 +0000)
lib/sqlalchemy/databases/mysql.py
test/dialect/mysql.py

index 13932803976ef4ae3e8ce951f6a342f0d34725ab..766748c62f9faaaa92f554742bc015678b3f17e3 100644 (file)
@@ -551,9 +551,14 @@ class MSTimeStamp(sqltypes.TIMESTAMP):
 class MSYear(sqltypes.TypeEngine):
     """MySQL YEAR type, for single byte storage of years 1901-2155"""
 
-    def get_col_spec(self):
-        return "YEAR"
+    def __init__(self, length=None):
+        self.length = length
 
+    def get_col_spec(self):
+        if self.length is None:
+            return "YEAR"
+        else:
+            return "YEAR(%s)" % self.length
 
 class MSText(_StringType, sqltypes.TEXT):
     """MySQL TEXT type, for text up to 2^16 characters""" 
index fcf1de4492fb5c070cca575424f82e0bda4b539c..ef0562884279ebf64923bbecc13806da5574858a 100644 (file)
@@ -422,8 +422,8 @@ class TypesTest(AssertMixin):
                            Column('y1', mysql.MSYear),
                            Column('y2', mysql.MSYear),
                            Column('y3', mysql.MSYear),
-                           Column('y4', mysql.MSYear),
-                           Column('y5', mysql.MSYear))
+                           Column('y4', mysql.MSYear(2)),
+                           Column('y5', mysql.MSYear(4)))
 
         try:
             year_table.create()
@@ -433,8 +433,11 @@ class TypesTest(AssertMixin):
             for table in year_table, reflected:
                 table.insert(['1950', '50', None, 50, 1950]).execute()
                 row = list(table.select().execute())[0]
-                self.assert_eq(list(row), [1950, 2050, None, 2050, 1950])
+                self.assert_eq(list(row), [1950, 2050, None, 50, 1950])
                 table.delete().execute()
+                self.assert_(colspec(table.c.y1).startswith('y1 YEAR'))
+                self.assert_eq(colspec(table.c.y4), 'y4 YEAR(2)')
+                self.assert_eq(colspec(table.c.y5), 'y5 YEAR(4)')
         finally:
             meta.drop_all()