From: Mike Bayer Date: Sat, 27 Mar 2010 21:27:28 +0000 (-0400) Subject: - No longer guessing that TINYINT(1) should be BOOLEAN X-Git-Tag: rel_0_6beta3~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7535e19feca1c25a13e463fb0a5db6db17bda096;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 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] --- diff --git a/CHANGES b/CHANGES index 8022d0f3a3..38e120220e 100644 --- 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 diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index f9bb482354..6650b8388e 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -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: diff --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index 23a85b6bb9..b0859210d9 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -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')