From: Jeff Dairiki Date: Sat, 7 Apr 2012 04:55:39 +0000 (-0700) Subject: Fix innodb autoinc constraint (double)quoting X-Git-Tag: rel_0_7_7~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7abf86f72e62644846dfd540bcceae7959cd046;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fix innodb autoinc constraint (double)quoting --- diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index a67a67d6f6..5636271362 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1395,7 +1395,7 @@ class MySQLDDLCompiler(compiler.DDLCompiler): auto_inc_column is not list(table.primary_key)[0]: if constraint_string: constraint_string += ", \n\t" - constraint_string += "KEY `idx_autoinc_%s`(`%s`)" % (auto_inc_column.name, \ + constraint_string += "KEY `idx_autoinc_%s`(%s)" % (auto_inc_column.name, \ self.preparer.format_column(auto_inc_column)) return constraint_string diff --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index 462267b46c..613fac7c32 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -1411,7 +1411,7 @@ class SQLTest(fixtures.TestBase, AssertsCompiledSQL): 'CREATE TABLE sometable (assigned_id ' 'INTEGER NOT NULL, id INTEGER NOT NULL ' 'AUTO_INCREMENT, PRIMARY KEY (assigned_id, ' - 'id), KEY `idx_autoinc_id`(`id`))ENGINE=Inn' + 'id), KEY `idx_autoinc_id`(id))ENGINE=Inn' 'oDB') t1 = Table('sometable', MetaData(), Column('assigned_id', @@ -1424,6 +1424,22 @@ class SQLTest(fixtures.TestBase, AssertsCompiledSQL): 'INTEGER NOT NULL, PRIMARY KEY ' '(assigned_id, id))ENGINE=InnoDB') + def test_innodb_autoincrement_reserved_word_column_name(self): + t1 = Table( + 'sometable', MetaData(), + Column('id', Integer(), primary_key=True, autoincrement=False), + Column('order', Integer(), primary_key=True, autoincrement=True), + mysql_engine='InnoDB') + self.assert_compile( + schema.CreateTable(t1), + 'CREATE TABLE sometable (' + 'id INTEGER NOT NULL, ' + '`order` INTEGER NOT NULL AUTO_INCREMENT, ' + 'PRIMARY KEY (id, `order`), ' + 'KEY `idx_autoinc_order`(`order`)' + ')ENGINE=InnoDB') + + class SQLModeDetectionTest(fixtures.TestBase): __only_on__ = 'mysql'