summaryrefslogtreecommitdiff
path: root/test/dialect/mysql.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-07-29 16:13:23 +0000
committerJason Kirtland <jek@discorporate.us>2007-07-29 16:13:23 +0000
commit6a1d279a9a702a4c520446f52edeb1ee4864dd70 (patch)
tree4c69f76299ee30f3b715f7c43fcfc880d51803cd /test/dialect/mysql.py
parentc9cc90bbdc24f8d4d0429468404cd43de46fc07f (diff)
downloadsqlalchemy-6a1d279a9a702a4c520446f52edeb1ee4864dd70.tar.gz
Big MySQL dialect update, mostly efficiency and style.
Added TINYINT [ticket:691]- whoa, how did that one go missing for so long? Added a charset-fixing pool listener. The driver-level option doesn't help everyone with this one. New reflector code not quite done and omiited from this commit.
Diffstat (limited to 'test/dialect/mysql.py')
-rw-r--r--test/dialect/mysql.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/dialect/mysql.py b/test/dialect/mysql.py
index dbba78893..484022bd1 100644
--- a/test/dialect/mysql.py
+++ b/test/dialect/mysql.py
@@ -90,6 +90,17 @@ class TypesTest(AssertMixin):
(mysql.MSBigInteger, [4], {'zerofill':True, 'unsigned':True},
'BIGINT(4) UNSIGNED ZEROFILL'),
+ (mysql.MSTinyInteger, [], {},
+ 'TINYINT'),
+ (mysql.MSTinyInteger, [1], {},
+ 'TINYINT(1)'),
+ (mysql.MSTinyInteger, [1], {'unsigned':True},
+ 'TINYINT(1) UNSIGNED'),
+ (mysql.MSTinyInteger, [1], {'zerofill':True},
+ 'TINYINT(1) ZEROFILL'),
+ (mysql.MSTinyInteger, [1], {'zerofill':True, 'unsigned':True},
+ 'TINYINT(1) UNSIGNED ZEROFILL'),
+
(mysql.MSSmallInteger, [], {},
'SMALLINT'),
(mysql.MSSmallInteger, [4], {},
@@ -320,5 +331,38 @@ class TypesTest(AssertMixin):
m.drop_all()
+class CharsetHelperTest(PersistTest):
+ @testing.supported('mysql')
+ def test_basic(self):
+ if testbase.db.dialect.get_version_info(testbase.db) < (4, 1):
+ return
+
+ helper = mysql.MySQLCharsetOnConnect('utf8')
+
+ e = create_engine(testbase.db.url, listeners=[helper])
+
+ rs = e.execute("SHOW VARIABLES LIKE 'character_set%%'")
+ vars = dict([(row[0], row[1]) for row in mysql._compat_fetchall(rs)])
+ self.assert_(vars['character_set_client'] == 'utf8')
+ self.assert_(vars['character_set_connection'] == 'utf8')
+
+ helper.charset = 'latin1'
+ e.pool.dispose()
+ rs = e.execute("SHOW VARIABLES LIKE 'character_set%%'")
+ vars = dict([(row[0], row[1]) for row in mysql._compat_fetchall(rs)])
+ self.assert_(vars['character_set_client'] == 'latin1')
+ self.assert_(vars['character_set_connection'] == 'latin1')
+
+ helper.charset = 'utf8'
+ helper.collation = 'utf8_bin'
+ e.pool.dispose()
+ rs = e.execute("SHOW VARIABLES LIKE 'character_set%%'")
+ vars = dict([(row[0], row[1]) for row in mysql._compat_fetchall(rs)])
+ self.assert_(vars['character_set_client'] == 'utf8')
+ self.assert_(vars['character_set_connection'] == 'utf8')
+ rs = e.execute("SHOW VARIABLES LIKE 'collation%%'")
+ vars = dict([(row[0], row[1]) for row in mysql._compat_fetchall(rs)])
+ self.assert_(vars['collation_connection'] == 'utf8_bin')
+
if __name__ == "__main__":
testbase.main()