diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-02-17 03:46:13 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-02-17 03:46:13 +0000 |
| commit | b5bb6bb06d33b03c9af61eb869aab84b2a99a792 (patch) | |
| tree | 57d648afa77e52870de7b17569b5dbe050eda37a | |
| parent | f4b1484ff570125ba511ed931e8e5e53d53f4866 (diff) | |
| download | sqlalchemy-b5bb6bb06d33b03c9af61eb869aab84b2a99a792.tar.gz | |
- fixed generation of CHECK constraints on columns [ticket:464]
| -rw-r--r-- | CHANGES | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/ansisql.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/schema.py | 7 | ||||
| -rw-r--r-- | test/sql/constraints.py | 3 |
4 files changed, 13 insertions, 2 deletions
@@ -13,6 +13,7 @@ for named args, or a list of list or dicts to invoke executemany() - small fix to BoundMetaData to accept unicode or string URLs - fixed named PrimaryKeyConstraint generation [ticket:466] courtesy andrija at gmail + - fixed generation of CHECK constraints on columns [ticket:464] - orm: - another refactoring to relationship calculation. Allows more accurate ORM behavior with relationships from/to/between mappers, particularly polymorphic mappers, diff --git a/lib/sqlalchemy/ansisql.py b/lib/sqlalchemy/ansisql.py index 6cb57e148..647140791 100644 --- a/lib/sqlalchemy/ansisql.py +++ b/lib/sqlalchemy/ansisql.py @@ -742,6 +742,10 @@ class ANSISchemaGenerator(ANSISchemaBase): if constraint.name is not None: self.append("CONSTRAINT %s " % constraint.name) self.append(" CHECK (%s)" % constraint.sqltext) + + def visit_column_check_constraint(self, constraint): + self.append(" ") + self.append(" CHECK (%s)" % constraint.sqltext) def visit_primary_key_constraint(self, constraint): if len(constraint) == 0: diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 323d30da5..d0863800b 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -705,7 +705,10 @@ class CheckConstraint(Constraint): super(CheckConstraint, self).__init__(name) self.sqltext = sqltext def accept_schema_visitor(self, visitor, traverse=True): - visitor.visit_check_constraint(self) + if isinstance(self.parent, Table): + visitor.visit_check_constraint(self) + else: + visitor.visit_column_check_constraint(self) def _set_parent(self, parent): self.parent = parent parent.constraints.add(self) @@ -993,6 +996,8 @@ class SchemaVisitor(sql.ClauseVisitor): pass def visit_check_constraint(self, constraint): pass + def visit_column_check_constraint(self, constraint): + pass default_metadata = DynamicMetaData('default') diff --git a/test/sql/constraints.py b/test/sql/constraints.py index 886baef0c..926022c82 100644 --- a/test/sql/constraints.py +++ b/test/sql/constraints.py @@ -28,7 +28,7 @@ class ConstraintTest(testbase.AssertMixin): ) metadata.create_all() - @testbase.unsupported('sqlite', 'mysql') + @testbase.unsupported('mysql') def test_check_constraint(self): foo = Table('foo', metadata, Column('id', Integer, primary_key=True), @@ -38,6 +38,7 @@ class ConstraintTest(testbase.AssertMixin): bar = Table('bar', metadata, Column('id', Integer, primary_key=True), Column('x', Integer, CheckConstraint('x>7')), + Column('z', Integer) ) metadata.create_all() |
