diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-01-17 14:31:10 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-01-17 16:29:27 -0500 |
commit | bdbe164d392d41991b64ced0f097930a04a2c420 (patch) | |
tree | fbaf0da3f3e68b211821220843c9b3ab944c38df /test/sql/test_operators.py | |
parent | a711522650863dd368acfa90e09216ae37fc3ec2 (diff) | |
download | sqlalchemy-bdbe164d392d41991b64ced0f097930a04a2c420.tar.gz |
apply asbool reduction to the onclause in join()
The :func:`.true` and :func:`.false` operators may now be applied as the
"onclause" of a :func:`.sql.join` on a backend that does not support
"native boolean" expressions, e.g. Oracle or SQL Server, and the expression
will render as "1=1" for true and "1=0" false. This is the behavior that
was introduced many years ago in :ticket:`2804` for and/or expressions.
Change-Id: I85311c31c22d6e226c618f8840f6b95eca611153
Diffstat (limited to 'test/sql/test_operators.py')
-rw-r--r-- | test/sql/test_operators.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/sql/test_operators.py b/test/sql/test_operators.py index aa56d0b6b..a90b03b38 100644 --- a/test/sql/test_operators.py +++ b/test/sql/test_operators.py @@ -5,6 +5,7 @@ from sqlalchemy import and_ from sqlalchemy import between from sqlalchemy import exc from sqlalchemy import Integer +from sqlalchemy import join from sqlalchemy import LargeBinary from sqlalchemy import literal_column from sqlalchemy import not_ @@ -988,6 +989,42 @@ class BooleanEvalTest(fixtures.TestBase, testing.AssertsCompiledSQL): or_(false(), true()), "1 = 1", dialect=self._dialect(False) ) + def test_seven_a(self): + t1 = table("t1", column("a")) + t2 = table("t2", column("b")) + self.assert_compile( + join(t1, t2, onclause=true()), + "t1 JOIN t2 ON 1 = 1", + dialect=self._dialect(False), + ) + + def test_seven_b(self): + t1 = table("t1", column("a")) + t2 = table("t2", column("b")) + self.assert_compile( + join(t1, t2, onclause=false()), + "t1 JOIN t2 ON 0 = 1", + dialect=self._dialect(False), + ) + + def test_seven_c(self): + t1 = table("t1", column("a")) + t2 = table("t2", column("b")) + self.assert_compile( + join(t1, t2, onclause=true()), + "t1 JOIN t2 ON true", + dialect=self._dialect(True), + ) + + def test_seven_d(self): + t1 = table("t1", column("a")) + t2 = table("t2", column("b")) + self.assert_compile( + join(t1, t2, onclause=false()), + "t1 JOIN t2 ON false", + dialect=self._dialect(True), + ) + def test_eight(self): self.assert_compile( and_(false(), true()), "false", dialect=self._dialect(True) |