]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed reflection bug whereby when COLLATE was present,
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 10 Feb 2010 05:46:03 +0000 (05:46 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 10 Feb 2010 05:46:03 +0000 (05:46 +0000)
nullable flag and server defaults would not be reflected.
[ticket:1655]

CHANGES
lib/sqlalchemy/dialects/mysql/base.py
test/dialect/test_mysql.py

diff --git a/CHANGES b/CHANGES
index 27f3243a27ca5fa07490fe9a7e059b45e4d00b77..51a47ffb9a260f7013cd38599c949319d11dad19 100644 (file)
--- 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.
index 1a85babe4a2215d5a90c2ae5f9e62a200ee95403..77b13c1a736afad04a4c7c1fbb052ab6ea926768 100644 (file)
@@ -2331,8 +2331,8 @@ class MySQLTableDefinitionParser(object):
               r'(?:\x27(?:\x27\x27|[^\x27])*\x27,?)+))\))?'
             r'(?: +(?P<unsigned>UNSIGNED))?'
             r'(?: +(?P<zerofill>ZEROFILL))?'
-            r'(?: +CHARACTER SET +(?P<charset>\w+))?'
-            r'(?: +COLLATE +(P<collate>\w+))?'
+            r'(?: +CHARACTER SET +(?P<charset>[\w_]+))?'
+            r'(?: +COLLATE +(?P<collate>[\w_]+))?'
             r'(?: +(?P<notnull>NOT NULL))?'
             r'(?: +DEFAULT +(?P<default>'
               r'(?:NULL|\x27(?:\x27\x27|[^\x27])*\x27|\w+)'
index 09213cf95671ce7259e1b62592e35d378f2dcefa..0e9aca818186b930211f4f73a04bcfb3a1b170cd 100644 (file)
@@ -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()