From 52728f7052e643e9890da75ef2c756d4bead41f0 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 3 Feb 2021 10:42:08 -0500 Subject: Add coercions to literal() To prevent literal() from receiving a ClauseElement which then leads to confusing results, add a new LiteralValueRole coercion that does an _is_literal() check and implement for literal(). Fixes: #5639 Change-Id: Ibd686544af2d7c013765278f984baf237de88caf --- lib/sqlalchemy/sql/elements.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/sqlalchemy/sql/elements.py') diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index a9f21cd5f..3d6643503 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -150,7 +150,7 @@ def literal(value, type_=None): will provide bind-parameter translation for this literal. """ - return BindParameter(None, value, type_=type_, unique=True) + return coercions.expect(roles.LiteralValueRole, value, type_=type_) def outparam(key, type_=None): -- cgit v1.2.1