summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/dml.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-12-28 12:04:07 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2022-12-28 12:19:03 -0500
commite68173bf7d296b2948abed06f79c7cbd0ab66b0d (patch)
tree33ac8c8b5155660d289ddc842670340a3895048a /lib/sqlalchemy/sql/dml.py
parent8e041e24182c8f4b7762ebbecd494f7dbf86b818 (diff)
downloadsqlalchemy-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.py14
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