]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixes MySQL dialect partitioning
authorMarcus McCurdy <mmccurdy@50onred.com>
Fri, 14 Feb 2014 18:23:51 +0000 (13:23 -0500)
committerMarcus McCurdy <mmccurdy@50onred.com>
Fri, 14 Feb 2014 18:23:51 +0000 (13:23 -0500)
lib/sqlalchemy/dialects/mysql/base.py
test/dialect/mysql/test_compiler.py

index 61698b038e21977b3063bfbbb67a277d7a769156..8f98a775adae5b431a5329fdb7681ffbf93c1ac5 100644 (file)
@@ -1607,12 +1607,12 @@ class MySQLDDLCompiler(compiler.DDLCompiler):
             if opt in ('DATA_DIRECTORY', 'INDEX_DIRECTORY',
                        'DEFAULT_CHARACTER_SET', 'CHARACTER_SET',
                        'DEFAULT_CHARSET',
-                       'DEFAULT_COLLATE'):
+                       'DEFAULT_COLLATE', 'PARTITION_BY'):
                 opt = opt.replace('_', ' ')
 
             joiner = '='
             if opt in ('TABLESPACE', 'DEFAULT CHARACTER SET',
-                       'CHARACTER SET', 'COLLATE'):
+                       'CHARACTER SET', 'COLLATE', 'PARTITION BY', 'PARTITIONS'):
                 joiner = ' '
 
             table_opts.append(joiner.join((opt, arg)))
index 45f8405c8bf81d2f1b81e43800d45dc166330559..24e20331713d63cb8cb8f5fafb6c34377c6c4ee3 100644 (file)
@@ -476,3 +476,33 @@ class SQLTest(fixtures.TestBase, AssertsCompiledSQL):
             'KEY idx_autoinc_order (`order`)'
             ')ENGINE=InnoDB')
 
+    def test_create_table_with_partition(self):
+        t1 = Table(
+            'testtable', MetaData(),
+            Column('id', Integer(), primary_key=True, autoincrement=True),
+            Column('other_id', Integer(), primary_key=True, autoincrement=False),
+            mysql_partitions='2', mysql_partition_by='KEY(other_id)')
+        self.assert_compile(
+            schema.CreateTable(t1),
+            'CREATE TABLE testtable ('
+            'id INTEGER NOT NULL AUTO_INCREMENT, '
+            'other_id INTEGER NOT NULL, '
+            'PRIMARY KEY (id, other_id)'
+            ')PARTITION BY KEY(other_id) PARTITIONS 2'
+        )
+
+    def test_create_table_with_partition_hash(self):
+        t1 = Table(
+            'testtable', MetaData(),
+            Column('id', Integer(), primary_key=True, autoincrement=True),
+            Column('other_id', Integer(), primary_key=True, autoincrement=False),
+            mysql_partitions='2', mysql_partition_by='HASH(other_id)')
+        self.assert_compile(
+            schema.CreateTable(t1),
+            'CREATE TABLE testtable ('
+            'id INTEGER NOT NULL AUTO_INCREMENT, '
+            'other_id INTEGER NOT NULL, '
+            'PRIMARY KEY (id, other_id)'
+            ')PARTITION BY HASH(other_id) PARTITIONS 2'
+        )
+