diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-08-02 01:12:03 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-08-02 01:12:03 -0400 |
| commit | b2c0b50bbfa43f662afd16b7ca51bcfe17e4c351 (patch) | |
| tree | d98573e0d6ed5308cde1c6aa32709afa86f0d7fc /test | |
| parent | 2f844f231cbcd86dad5d4094565858424ea2c3c7 (diff) | |
| download | sqlalchemy-b2c0b50bbfa43f662afd16b7ca51bcfe17e4c351.tar.gz | |
- The generated index name also is based on
a "max index name length" attribute which is
separate from the "max identifier length" -
this to appease MySQL who has a max length
of 64 for index names, separate from their
overall max length of 255. [ticket:1412]
Diffstat (limited to 'test')
| -rw-r--r-- | test/dialect/test_mysql.py | 19 | ||||
| -rw-r--r-- | test/sql/test_constraints.py | 36 |
2 files changed, 39 insertions, 16 deletions
diff --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index 791a93c6e..7c4cc2309 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -1212,7 +1212,24 @@ class SQLTest(TestBase, AssertsCompiledSQL): self.assert_compile( select([extract('milliseconds', t.c.col1)]), "SELECT EXTRACT(millisecond FROM t.col1) AS anon_1 FROM t") - + + def test_too_long_index(self): + exp = 'ix_zyrenian_zyme_zyzzogeton_zyzzogeton_zyrenian_zyme_zyz_5cd2' + tname = 'zyrenian_zyme_zyzzogeton_zyzzogeton' + cname = 'zyrenian_zyme_zyzzogeton_zo' + + t1 = Table(tname, MetaData(), + Column(cname, Integer, index=True), + ) + ix1 = list(t1.indexes)[0] + + self.assert_compile( + schema.CreateIndex(ix1), + "CREATE INDEX %s " + "ON %s (%s)" % (exp, tname, cname), + dialect=mysql.dialect() + ) + def test_innodb_autoincrement(self): t1 = Table('sometable', MetaData(), Column('assigned_id', Integer(), primary_key=True, autoincrement=False), diff --git a/test/sql/test_constraints.py b/test/sql/test_constraints.py index 5624c0ec6..69f29a9bd 100644 --- a/test/sql/test_constraints.py +++ b/test/sql/test_constraints.py @@ -183,24 +183,30 @@ class ConstraintTest(TestBase, AssertsExecutionResults, AssertsCompiledSQL): def test_too_long_idx_name(self): dialect = testing.db.dialect.__class__() - dialect.max_identifier_length = 22 - for tname, cname, exp in [ - ('sometable', 'this_name_is_too_long', 'ix_sometable_t_09aa'), - ('sometable', 'this_name_alsois_long', 'ix_sometable_t_3cf1'), - ]: + for max_ident, max_index in [(22, None), (256, 22)]: + dialect.max_identifier_length = max_ident + dialect.max_index_name_length = max_index + + for tname, cname, exp in [ + ('sometable', 'this_name_is_too_long', 'ix_sometable_t_09aa'), + ('sometable', 'this_name_alsois_long', 'ix_sometable_t_3cf1'), + ]: - t1 = Table(tname, MetaData(), - Column(cname, Integer, index=True), - ) - ix1 = list(t1.indexes)[0] + t1 = Table(tname, MetaData(), + Column(cname, Integer, index=True), + ) + ix1 = list(t1.indexes)[0] - self.assert_compile( - schema.CreateIndex(ix1), - "CREATE INDEX %s " - "ON %s (%s)" % (exp, tname, cname), - dialect=dialect - ) + self.assert_compile( + schema.CreateIndex(ix1), + "CREATE INDEX %s " + "ON %s (%s)" % (exp, tname, cname), + dialect=dialect + ) + + dialect.max_identifier_length = 22 + dialect.max_index_name_length = None t1 = Table('t', MetaData(), Column('c', Integer)) assert_raises( |
