diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-02-22 13:11:20 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-02-22 13:11:20 -0500 |
| commit | 3cb614009ee87a115ec7230949c031402efb17c1 (patch) | |
| tree | f892ada52a873dd6a7214edea517ecaef10f3fa9 /lib/sqlalchemy/sql/selectable.py | |
| parent | ca16c53651f819e9587ed29d7d1d7d937e7f25ce (diff) | |
| download | sqlalchemy-3cb614009ee87a115ec7230949c031402efb17c1.tar.gz | |
Ensure descendants of mixins don't become cacheable
HasPrefix / HasSuffixes / SupportsCloneAnnotations exported
a _traverse_internals attribute that does not represent a
complete traversal, meaning non-traversible subclasses would
seem traversible. rename these attributes so that this
does not occur. DML is currently not traversible (will be soon).
Change-Id: I2605e61c8c3d49965335e66e09f4aeedc5e73bd3
Diffstat (limited to 'lib/sqlalchemy/sql/selectable.py')
| -rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 5f22457fa..b11e315ea 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -208,7 +208,9 @@ class Selectable(ReturnsRows): class HasPrefixes(object): _prefixes = () - _traverse_internals = [("_prefixes", InternalTraversal.dp_prefix_sequence)] + _has_prefixes_traverse_internals = [ + ("_prefixes", InternalTraversal.dp_prefix_sequence) + ] @_generative @_document_text_coercion( @@ -261,7 +263,9 @@ class HasPrefixes(object): class HasSuffixes(object): _suffixes = () - _traverse_internals = [("_suffixes", InternalTraversal.dp_prefix_sequence)] + _has_suffixes_traverse_internals = [ + ("_suffixes", InternalTraversal.dp_prefix_sequence) + ] @_generative @_document_text_coercion( @@ -1480,8 +1484,8 @@ class CTE(Generative, HasPrefixes, HasSuffixes, AliasedReturnsRows): ("_restates", InternalTraversal.dp_clauseelement_unordered_set), ("recursive", InternalTraversal.dp_boolean), ] - + HasPrefixes._traverse_internals - + HasSuffixes._traverse_internals + + HasPrefixes._has_prefixes_traverse_internals + + HasSuffixes._has_suffixes_traverse_internals ) @classmethod @@ -2793,7 +2797,7 @@ class CompoundSelect(GenerativeSelect): ("_group_by_clause", InternalTraversal.dp_clauseelement), ("_for_update_arg", InternalTraversal.dp_clauseelement), ("keyword", InternalTraversal.dp_string), - ] + SupportsCloneAnnotations._traverse_internals + ] + SupportsCloneAnnotations._clone_annotations_traverse_internals UNION = util.symbol("UNION") UNION_ALL = util.symbol("UNION ALL") @@ -3173,9 +3177,9 @@ class Select( ("_distinct", InternalTraversal.dp_boolean), ("_distinct_on", InternalTraversal.dp_clauseelement_list), ] - + HasPrefixes._traverse_internals - + HasSuffixes._traverse_internals - + SupportsCloneAnnotations._traverse_internals + + HasPrefixes._has_prefixes_traverse_internals + + HasSuffixes._has_suffixes_traverse_internals + + SupportsCloneAnnotations._clone_annotations_traverse_internals ) @classmethod @@ -4500,7 +4504,7 @@ class TextualSelect(SelectBase): _traverse_internals = [ ("element", InternalTraversal.dp_clauseelement), ("column_args", InternalTraversal.dp_clauseelement_list), - ] + SupportsCloneAnnotations._traverse_internals + ] + SupportsCloneAnnotations._clone_annotations_traverse_internals _is_textual = True |
