]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- No longer guessing that TINYINT(1) should be BOOLEAN
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 27 Mar 2010 21:27:28 +0000 (17:27 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 27 Mar 2010 21:27:28 +0000 (17:27 -0400)
when reflecting - TINYINT(1) is returned.  Use Boolean/
BOOLEAN in table definition to get boolean conversion
behavior.  [ticket:1752]

CHANGES
lib/sqlalchemy/dialects/mysql/base.py
test/dialect/test_mysql.py

diff --git a/CHANGES b/CHANGES
index 8022d0f3a3d8faa160fcfa9e89b590210ed6b0c8..38e120220e6d4086c1ca0a45282eb00533efbb36 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -87,6 +87,12 @@ CHANGES
      argument 'precision' to both.   'precision' and 
      'timezone' are correctly reflected for both TIME and 
      TIMEZONE types. [ticket:997]
+
+- mysql
+   - No longer guessing that TINYINT(1) should be BOOLEAN
+     when reflecting - TINYINT(1) is returned.  Use Boolean/
+     BOOLEAN in table definition to get boolean conversion
+     behavior.  [ticket:1752]
      
 - oracle
    - The Oracle dialect will issue VARCHAR type definitions
index f9bb4823548fdd926393e4119c433133904be360..6650b8388ef5a8912a3eb2976b3b134a0e4ea3e2 100644 (file)
@@ -2207,13 +2207,6 @@ class MySQLTableDefinitionParser(object):
         name, type_, args, notnull = \
               spec['name'], spec['coltype'], spec['arg'], spec['notnull']
 
-        # Convention says that TINYINT(1) columns == BOOLEAN
-        if type_ == 'tinyint' and args == '1':
-            type_ = 'boolean'
-            args = None
-            spec['unsigned'] = None
-            spec['zerofill'] = None
-
         try:
             col_type = self.dialect.ischema_names[type_]
         except KeyError:
index 23a85b6bb95e06dc679adcfc6a386a9688214085..b0859210d9fcfdd2fb207027092cdbb23146936f 100644 (file)
@@ -399,8 +399,17 @@ class TypesTest(TestBase, AssertsExecutionResults, AssertsCompiledSQL):
             roundtrip([False, False, 0, 0, 0], [False, False, 0, 0, 0])
 
             meta2 = MetaData(testing.db)
-            # replace with reflected
             table = Table('mysql_bool', meta2, autoload=True)
+            eq_(colspec(table.c.b3), 'b3 TINYINT(1)')
+            eq_(colspec(table.c.b4), 'b4 TINYINT(1) UNSIGNED')
+
+            meta2 = MetaData(testing.db)
+            table = Table('mysql_bool', meta2, 
+                            Column('b1', BOOLEAN),
+                            Column('b2', Boolean),
+                            Column('b3', BOOLEAN), 
+                            Column('b4', BOOLEAN), 
+                            autoload=True)
             eq_(colspec(table.c.b3), 'b3 BOOL')
             eq_(colspec(table.c.b4), 'b4 BOOL')