diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-01-15 16:42:29 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-01-15 16:42:29 -0500 |
commit | dff5a404e489d5215da5aa30870b78aca8423de5 (patch) | |
tree | 39f6ae1949762d269f6a73e0315f0fa6910ceacd /lib/sqlalchemy/schema.py | |
parent | fc0ffac24155931c2db10d1a469e1f7898268e45 (diff) | |
download | sqlalchemy-dff5a404e489d5215da5aa30870b78aca8423de5.tar.gz |
- getting slightly more consistent behavior for the edge case of pk columns
with server default - autoincrement is now false with any server_default,
so these all return None, applies consistency to [ticket:2020], [ticket:2021].
if prefetch is desired a "default" should be used instead of server_default.
Diffstat (limited to 'lib/sqlalchemy/schema.py')
-rw-r--r-- | lib/sqlalchemy/schema.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index a530a1a7a..26f607512 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -325,11 +325,8 @@ 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)): - # 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. + isinstance(col.default, (type(None), Sequence)) and \ + (col.server_default is None or col.server_default.reflected): return col @property @@ -1231,6 +1228,7 @@ class DefaultGenerator(SchemaItem): __visit_name__ = 'default_generator' is_sequence = False + is_server_default = False def __init__(self, for_update=False): self.for_update = for_update @@ -1423,6 +1421,8 @@ class FetchedValue(object): INSERT. """ + is_server_default = True + reflected = False def __init__(self, for_update=False): self.for_update = for_update @@ -1460,12 +1460,13 @@ class DefaultClause(FetchedValue): """ - def __init__(self, arg, for_update=False): + def __init__(self, arg, for_update=False, _reflected=False): util.assert_arg_type(arg, (basestring, expression.ClauseElement, expression._TextClause), 'arg') super(DefaultClause, self).__init__(for_update) self.arg = arg + self.reflected = _reflected def __repr__(self): return "DefaultClause(%r, for_update=%r)" % \ |