summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-01-12 15:49:59 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-01-12 15:49:59 -0500
commit0f31f36fe59aa2053271df459fbc3092a0ce599c (patch)
treec34d109f59e7221f1afe88a2b009a4f44abd2f31
parentc9ebe3b723ecc17bb171343f05534f4fd7c9a9fc (diff)
downloadsqlalchemy-0f31f36fe59aa2053271df459fbc3092a0ce599c.tar.gz
- dont count server_default absense as part of autoincrement, PG
will have a value here upon reflection. - mysql, others will have to check "server_default" when rendering special keywords like AUTOINCREMENT
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py2
-rw-r--r--lib/sqlalchemy/schema.py8
-rw-r--r--test/sql/test_defaults.py1
3 files changed, 6 insertions, 5 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py
index 61dd99b85..8b8380471 100644
--- a/lib/sqlalchemy/dialects/mysql/base.py
+++ b/lib/sqlalchemy/dialects/mysql/base.py
@@ -1309,7 +1309,7 @@ class MySQLDDLCompiler(compiler.DDLCompiler):
elif column.nullable and is_timestamp and default is None:
colspec.append('NULL')
- if column is column.table._autoincrement_column:
+ if column is column.table._autoincrement_column and column.server_default is None:
colspec.append('AUTO_INCREMENT')
return ' '.join(colspec)
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py
index a81874500..a530a1a7a 100644
--- a/lib/sqlalchemy/schema.py
+++ b/lib/sqlalchemy/schema.py
@@ -325,9 +325,11 @@ class Table(SchemaItem, expression.TableClause):
if col.autoincrement and \
issubclass(col.type._type_affinity, types.Integer) and \
not col.foreign_keys and \
- isinstance(col.default, (type(None), Sequence)) and \
- col.server_default is None:
-
+ isinstance(col.default, (type(None), Sequence)):
+ # don't look at server_default here since different backends may
+ # or may not have a server_default, e.g. postgresql reflected
+ # SERIAL cols will have a DefaultClause here but are still
+ # autoincrement.
return col
@property
diff --git a/test/sql/test_defaults.py b/test/sql/test_defaults.py
index 49aa8d3b3..7822e487c 100644
--- a/test/sql/test_defaults.py
+++ b/test/sql/test_defaults.py
@@ -746,7 +746,6 @@ class SpecialTypePKTest(testing.TestBase):
self._run_test(Sequence('foo_seq'))
@testing.fails_on('mysql', "Pending [ticket:2021]")
- @testing.fails_on('sqlite', "Pending [ticket:2021]")
def test_server_default(self):
# note that the MySQL dialect has to not render AUTOINCREMENT on this one
self._run_test(server_default='1',)