]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- dont count server_default absense as part of autoincrement, PG
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 12 Jan 2011 20:49:59 +0000 (15:49 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 12 Jan 2011 20:49:59 +0000 (15:49 -0500)
will have a value here upon reflection.
- mysql, others will have to check "server_default" when rendering
special keywords like AUTOINCREMENT

lib/sqlalchemy/dialects/mysql/base.py
lib/sqlalchemy/schema.py
test/sql/test_defaults.py

index 61dd99b85b7177ea37b0bb887b6af212236f3a8f..8b838047131f95fdd40af98bbe8d7869d811135d 100644 (file)
@@ -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)
index a8187450094916f0195089be73beb4d27b15cc01..a530a1a7a781e54be1b1b3f30374d0457424b96b 100644 (file)
@@ -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
index 49aa8d3b371cc971e1047937d93d273fa5e8abec..7822e487ccd2f39cca0564267be1ba754a425934 100644 (file)
@@ -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',)