summaryrefslogtreecommitdiff
path: root/test/sql/test_operators.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2020-01-17 14:31:10 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2020-01-17 16:29:27 -0500
commitbdbe164d392d41991b64ced0f097930a04a2c420 (patch)
treefbaf0da3f3e68b211821220843c9b3ab944c38df /test/sql/test_operators.py
parenta711522650863dd368acfa90e09216ae37fc3ec2 (diff)
downloadsqlalchemy-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.py37
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)