summaryrefslogtreecommitdiff
path: root/test/dialect/mysql.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/dialect/mysql.py')
-rw-r--r--test/dialect/mysql.py38
1 files changed, 28 insertions, 10 deletions
diff --git a/test/dialect/mysql.py b/test/dialect/mysql.py
index 7e0a55474..1cf6b437c 100644
--- a/test/dialect/mysql.py
+++ b/test/dialect/mysql.py
@@ -587,19 +587,37 @@ class TypesTest(AssertMixin):
columns = [Column('c%i' % (i + 1), t[0]) for i, t in enumerate(specs)]
- m = MetaData(testbase.db)
+ db = testbase.db
+ m = MetaData(db)
t_table = Table('mysql_types', m, *columns)
- m.drop_all()
- m.create_all()
+ try:
+ m.create_all()
- m2 = MetaData(testbase.db)
- rt = Table('mysql_types', m2, autoload=True)
-
- expected = [len(c) > 1 and c[1] or c[0] for c in specs]
- for i, reflected in enumerate(rt.c):
- assert isinstance(reflected.type, type(expected[i]))
+ m2 = MetaData(db)
+ rt = Table('mysql_types', m2, autoload=True)
+ try:
+ db.execute('CREATE OR REPLACE VIEW mysql_types_v '
+ 'AS SELECT * from mysql_types')
+ rv = Table('mysql_types_v', m2, autoload=True)
+
+ expected = [len(c) > 1 and c[1] or c[0] for c in specs]
+
+ # Early 5.0 releases seem to report more "general" for columns
+ # in a view, e.g. char -> varchar, tinyblob -> mediumblob
+ #
+ # Not sure exactly which point version has the fix.
+ if db.dialect.server_version_info(db.connect()) < (5, 0, 11):
+ tables = rt,
+ else:
+ tables = rt, rv
- m.drop_all()
+ for table in tables:
+ for i, reflected in enumerate(table.c):
+ assert isinstance(reflected.type, type(expected[i]))
+ finally:
+ db.execute('DROP VIEW mysql_types_v')
+ finally:
+ m.drop_all()
@testing.supported('mysql')
def test_autoincrement(self):