diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-12-28 12:04:07 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-12-28 12:19:03 -0500 |
commit | e68173bf7d296b2948abed06f79c7cbd0ab66b0d (patch) | |
tree | 33ac8c8b5155660d289ddc842670340a3895048a /lib/sqlalchemy/sql/dml.py | |
parent | 8e041e24182c8f4b7762ebbecd494f7dbf86b818 (diff) | |
download | sqlalchemy-e68173bf7d296b2948abed06f79c7cbd0ab66b0d.tar.gz |
ensure whereclause, returning copied as tuples
Fixed issue in the internal SQL traversal for DML statements like
:class:`_dml.Update` and :class:`_dml.Delete` which would cause among other
potential issues, a specific issue using lambda statements with the ORM
update/delete feature.
Fixes: #9033
Change-Id: I76428049cb767ba302fbea89555114bf63ab8687
Diffstat (limited to 'lib/sqlalchemy/sql/dml.py')
-rw-r--r-- | lib/sqlalchemy/sql/dml.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py index c279e344b..01776e8fc 100644 --- a/lib/sqlalchemy/sql/dml.py +++ b/lib/sqlalchemy/sql/dml.py @@ -1164,12 +1164,12 @@ class Insert(ValuesBase): ("_multi_values", InternalTraversal.dp_dml_multi_values), ("select", InternalTraversal.dp_clauseelement), ("_post_values_clause", InternalTraversal.dp_clauseelement), - ("_returning", InternalTraversal.dp_clauseelement_list), + ("_returning", InternalTraversal.dp_clauseelement_tuple), ("_hints", InternalTraversal.dp_table_hint_list), ("_return_defaults", InternalTraversal.dp_boolean), ( "_return_defaults_columns", - InternalTraversal.dp_clauseelement_list, + InternalTraversal.dp_clauseelement_tuple, ), ] + HasPrefixes._has_prefixes_traverse_internals @@ -1479,16 +1479,16 @@ class Update(DMLWhereBase, ValuesBase): _traverse_internals = ( [ ("table", InternalTraversal.dp_clauseelement), - ("_where_criteria", InternalTraversal.dp_clauseelement_list), + ("_where_criteria", InternalTraversal.dp_clauseelement_tuple), ("_inline", InternalTraversal.dp_boolean), ("_ordered_values", InternalTraversal.dp_dml_ordered_values), ("_values", InternalTraversal.dp_dml_values), - ("_returning", InternalTraversal.dp_clauseelement_list), + ("_returning", InternalTraversal.dp_clauseelement_tuple), ("_hints", InternalTraversal.dp_table_hint_list), ("_return_defaults", InternalTraversal.dp_boolean), ( "_return_defaults_columns", - InternalTraversal.dp_clauseelement_list, + InternalTraversal.dp_clauseelement_tuple, ), ] + HasPrefixes._has_prefixes_traverse_internals @@ -1684,8 +1684,8 @@ class Delete(DMLWhereBase, UpdateBase): _traverse_internals = ( [ ("table", InternalTraversal.dp_clauseelement), - ("_where_criteria", InternalTraversal.dp_clauseelement_list), - ("_returning", InternalTraversal.dp_clauseelement_list), + ("_where_criteria", InternalTraversal.dp_clauseelement_tuple), + ("_returning", InternalTraversal.dp_clauseelement_tuple), ("_hints", InternalTraversal.dp_table_hint_list), ] + HasPrefixes._has_prefixes_traverse_internals |