]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
use ExpressionElementRole for case targets in case()
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 Nov 2021 01:26:44 +0000 (21:26 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 Nov 2021 01:34:32 +0000 (21:34 -0400)
commit77a17797ecc08736ea942e29f79df4f96bd74e0c
tree80c641bb03d4fdbd703c86b1ee8caf08397cb5fb
parent245a6ce87dbf0abf25d71074b8597bb2a0f8d5fe
use ExpressionElementRole for case targets in case()

Fixed regression where the :func:`_sql.text` construct would no longer be
accepted as a target case in the "whens" list within a :func:`_sql.case`
construct. The regression appears related to an attempt to guard against
some forms of literal values that were considered to be ambiguous when
passed here; however, there's no reason the target cases shouldn't be
interpreted as open-ended SQL expressions just like anywhere else, and a
literal string or tuple will be converted to a bound parameter as would be
the case elsewhere.

Fixes: #7287
Change-Id: I75478adfa115f3292cb1362cc5b2fdf152b0ed6f
doc/build/changelog/unreleased_14/7287.rst [new file with mode: 0644]
lib/sqlalchemy/sql/elements.py
test/sql/test_case_statement.py
test/sql/test_text.py