summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus McCurdy <mmccurdy@50onred.com>2014-02-14 13:23:51 -0500
committerMarcus McCurdy <mmccurdy@50onred.com>2014-02-14 13:23:51 -0500
commitc597843f137b2b3ff90e648e7507dd1f325d4f48 (patch)
tree4f61b09c0281e343a5ba3b5b3df5204a383dc502
parent036cb93abfb44f4ab7fdb125eaaf2597a95a0187 (diff)
downloadsqlalchemy-c597843f137b2b3ff90e648e7507dd1f325d4f48.tar.gz
Fixes MySQL dialect partitioning
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py4
-rw-r--r--test/dialect/mysql/test_compiler.py30
2 files changed, 32 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py
index 61698b038..8f98a775a 100644
--- a/lib/sqlalchemy/dialects/mysql/base.py
+++ b/lib/sqlalchemy/dialects/mysql/base.py
@@ -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)))
diff --git a/test/dialect/mysql/test_compiler.py b/test/dialect/mysql/test_compiler.py
index 45f8405c8..24e203317 100644
--- a/test/dialect/mysql/test_compiler.py
+++ b/test/dialect/mysql/test_compiler.py
@@ -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'
+ )
+