summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-03-27 17:27:28 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-03-27 17:27:28 -0400
commit7535e19feca1c25a13e463fb0a5db6db17bda096 (patch)
treed54e1c7387603422784435a1f97a7efbe68124d8
parent36047e9bb28501477b1403059087cccc120be2b6 (diff)
downloadsqlalchemy-7535e19feca1c25a13e463fb0a5db6db17bda096.tar.gz
- 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]
-rw-r--r--CHANGES6
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py7
-rw-r--r--test/dialect/test_mysql.py11
3 files changed, 16 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 8022d0f3a..38e120220 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 f9bb48235..6650b8388 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 23a85b6bb..b0859210d 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')