diff options
author | aisch <me+bosch@aitmp.com> | 2015-11-23 10:22:50 -0800 |
---|---|---|
committer | aisch <me+bosch@aitmp.com> | 2015-11-23 10:22:50 -0800 |
commit | 0921a6abbc8246c57f447af7a6ac240778127fae (patch) | |
tree | fbc25b9774f01f177342dec52aeeb1fa643b2cc6 | |
parent | f7943db2f32e3cace9cadc5cf05402d425b76d33 (diff) | |
download | sqlalchemy-pr/215.tar.gz |
fix postgresql exclude contraint to check when= against None rather than __bool__ evalpr/215
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/ext.py | 2 | ||||
-rw-r--r-- | test/dialect/postgresql/test_compiler.py | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/ext.py b/lib/sqlalchemy/dialects/postgresql/ext.py index 9b2e3fd73..1a443c2d7 100644 --- a/lib/sqlalchemy/dialects/postgresql/ext.py +++ b/lib/sqlalchemy/dialects/postgresql/ext.py @@ -142,7 +142,7 @@ static/sql-createtable.html#SQL-CREATETABLE-EXCLUDE ) self.using = kw.get('using', 'gist') where = kw.get('where') - if where: + if where is not None: self.where = expression._literal_as_text(where) def copy(self, **kw): diff --git a/test/dialect/postgresql/test_compiler.py b/test/dialect/postgresql/test_compiler.py index 78217bd82..13acf8c86 100644 --- a/test/dialect/postgresql/test_compiler.py +++ b/test/dialect/postgresql/test_compiler.py @@ -510,6 +510,19 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL): '(CAST("Room" AS TEXT) WITH =)' ) + def test_exclude_constraint_when(self): + m = MetaData() + tbl = Table( + 'testtbl', m, + Column('room', String) + ) + cons = ExcludeConstraint(('room', '='), where=tbl.c.room.in_(['12'])) + tbl.append_constraint(cons) + self.assert_compile(schema.AddConstraint(cons), + 'ALTER TABLE testtbl ADD EXCLUDE USING gist ' + '(room WITH =) WHERE (testtbl.room IN (\'12\'))', + dialect=postgresql.dialect()) + def test_substring(self): self.assert_compile(func.substring('abc', 1, 2), 'SUBSTRING(%(substring_1)s FROM %(substring_2)s ' |