diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-08-18 14:17:06 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-08-18 14:18:02 -0400 |
commit | 8bc793c4dbc876722dfaad0ca731938c70b54b6c (patch) | |
tree | 3c3ffd8f5df8b2dabaa4c24b2f924e4ed51338a9 /lib/sqlalchemy/sql | |
parent | 7277c12e4d1bdc9647b9b306d89b5847d1c5a4d7 (diff) | |
download | sqlalchemy-8bc793c4dbc876722dfaad0ca731938c70b54b6c.tar.gz |
Deliver straight BinaryExpr w/ no negate for any() / all()
Adjusted the :meth:`_types.ARRAY.Comparator.any` and
:meth:`_types.ARRAY.Comparator.all` methods to implement a straight "NOT"
operation for negation, rather than negating the comparison operator.
Fixes: #5518
Change-Id: I87ee9278c321aafe51a679fcfcbb5fbb11307fda
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r-- | lib/sqlalchemy/sql/sqltypes.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py index 14ddedaec..fd85d6d30 100644 --- a/lib/sqlalchemy/sql/sqltypes.py +++ b/lib/sqlalchemy/sql/sqltypes.py @@ -2699,9 +2699,13 @@ class ARRAY(SchemaEventTarget, Indexable, Concatenable, TypeEngine): """ elements = util.preloaded.sql_elements operator = operator if operator else operators.eq - return operator( + + # send plain BinaryExpression so that negate remains at None, + # leading to NOT expr for negation. + return elements.BinaryExpression( coercions.expect(roles.ExpressionElementRole, other), elements.CollectionAggregate._create_any(self.expr), + operator, ) @util.preload_module("sqlalchemy.sql.elements") @@ -2735,9 +2739,13 @@ class ARRAY(SchemaEventTarget, Indexable, Concatenable, TypeEngine): """ elements = util.preloaded.sql_elements operator = operator if operator else operators.eq - return operator( + + # send plain BinaryExpression so that negate remains at None, + # leading to NOT expr for negation. + return elements.BinaryExpression( coercions.expect(roles.ExpressionElementRole, other), elements.CollectionAggregate._create_all(self.expr), + operator, ) comparator_factory = Comparator |