From: Mike Bayer Date: Wed, 10 Feb 2010 05:46:03 +0000 (+0000) Subject: - Fixed reflection bug whereby when COLLATE was present, X-Git-Tag: rel_0_6beta2~214 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=10b14a6c5c73a2db7517f705d857051ca107d504;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Fixed reflection bug whereby when COLLATE was present, nullable flag and server defaults would not be reflected. [ticket:1655] --- diff --git a/CHANGES b/CHANGES index 27f3243a27..51a47ffb9a 100644 --- a/CHANGES +++ b/CHANGES @@ -49,6 +49,11 @@ CHANGES not part of the FunctionElement base class, allowing a "type" to be handled in a custom constructor or class-level variable. + +- mysql + - Fixed reflection bug whereby when COLLATE was present, + nullable flag and server defaults would not be reflected. + [ticket:1655] - mssql - Re-established initial support for pymssql. diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 1a85babe4a..77b13c1a73 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -2331,8 +2331,8 @@ class MySQLTableDefinitionParser(object): r'(?:\x27(?:\x27\x27|[^\x27])*\x27,?)+))\))?' r'(?: +(?PUNSIGNED))?' r'(?: +(?PZEROFILL))?' - r'(?: +CHARACTER SET +(?P\w+))?' - r'(?: +COLLATE +(P\w+))?' + r'(?: +CHARACTER SET +(?P[\w_]+))?' + r'(?: +COLLATE +(?P[\w_]+))?' r'(?: +(?PNOT NULL))?' r'(?: +DEFAULT +(?P' r'(?:NULL|\x27(?:\x27\x27|[^\x27])*\x27|\w+)' diff --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index 09213cf956..0e9aca8181 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -734,14 +734,14 @@ class ReflectionTest(TestBase, AssertsExecutionResults): def test_default_reflection(self): """Test reflection of column defaults.""" - + from sqlalchemy.dialects.mysql import VARCHAR + def_table = Table('mysql_def', MetaData(testing.db), - Column('c1', String(10), DefaultClause('')), + Column('c1', VARCHAR(10, collation='utf8_unicode_ci'), DefaultClause(''), nullable=False), Column('c2', String(10), DefaultClause('0')), Column('c3', String(10), DefaultClause('abc')), Column('c4', TIMESTAMP, DefaultClause('2009-04-05 12:00:00')), Column('c5', TIMESTAMP), - ) def_table.create()