]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Deprecate empty or_() and and_()
authorFederico Caselli <cfederico87@gmail.com>
Thu, 23 Jan 2020 22:51:38 +0000 (17:51 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 25 Jan 2020 23:03:48 +0000 (18:03 -0500)
commit1de64504d8e68e2c0d14669c7638cf6f6d74973f
treebcb2f19fe89efc629408c4576c355f3fe998578b
parent411637fbcf679f36448f1b094afef375158df15e
Deprecate empty or_() and and_()

Creating an :func:`.and_` or :func:`.or_` construct with no arguments or
empty ``*args`` will now emit a deprecation warning, as the SQL produced is
a no-op (i.e. it renders as a blank string). This behavior is considered to
be non-intuitive, so for empty or possibly empty :func:`.and_` or
:func:`.or_` constructs, an appropriate default boolean should be included,
such as ``and_(True, *args)`` or ``or_(False, *args)``.   As has been the
case for many major versions of SQLAlchemy, these particular boolean
values will not render if the ``*args`` portion is non-empty.

As there are some internal cases where an empty and_() construct is used
in order to build an optional WHERE expression, a private
utility function is added to suit this use case.

Co-authored-by: Mike Bayer <mike_mp@zzzcomputing.com>
Fixes: #5054
Closes: #5062
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5062
Pull-request-sha: 5ca2f27281977d74e390148c0fb8deaa0e0e4ad9

Change-Id: I599b9c8befa64d9a59a35ad7dd84ff400e3aa647
doc/build/changelog/unreleased_14/5054.rst [new file with mode: 0644]
lib/sqlalchemy/orm/persistence.py
lib/sqlalchemy/sql/elements.py
test/engine/test_execute.py
test/sql/test_compiler.py
test/sql/test_delete.py
test/sql/test_deprecations.py
test/sql/test_operators.py
test/sql/test_selectable.py
test/sql/test_update.py