summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/traversals.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-08-05 19:17:07 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-08-05 19:19:02 -0400
commit3729a070d23421c94239bd24520592287476fdde (patch)
tree730dc7940da32e1f4b1b866c7956127c0f59ea6d /lib/sqlalchemy/sql/traversals.py
parentb75630cec9418ef087e7c6af0370ac6ba728a251 (diff)
downloadsqlalchemy-3729a070d23421c94239bd24520592287476fdde.tar.gz
accommodate for untracked boundparam lambda in offline_string
Fixed an issue in the ``CacheKey.to_offline_string()`` method used by the dogpile.caching example where attempting to create a proper cache key from the special "lambda" query generated by the lazy loader would fail to include the parameter values, leading to an incorrect cache key. Fixes: #6858 Change-Id: Ice27087583c6f3ff79cf7d5b879e5dd0a4e58158
Diffstat (limited to 'lib/sqlalchemy/sql/traversals.py')
-rw-r--r--lib/sqlalchemy/sql/traversals.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/sqlalchemy/sql/traversals.py b/lib/sqlalchemy/sql/traversals.py
index a86d16ef4..3d377271f 100644
--- a/lib/sqlalchemy/sql/traversals.py
+++ b/lib/sqlalchemy/sql/traversals.py
@@ -299,15 +299,15 @@ class CacheKey(namedtuple("CacheKey", ["key", "bindparams"])):
else:
sql_str = statement_cache[self.key]
- return repr(
- (
- sql_str,
- tuple(
- parameters.get(bindparam.key, bindparam.value)
- for bindparam in self.bindparams
- ),
+ if not self.bindparams:
+ param_tuple = tuple(parameters[key] for key in sorted(parameters))
+ else:
+ param_tuple = tuple(
+ parameters.get(bindparam.key, bindparam.value)
+ for bindparam in self.bindparams
)
- )
+
+ return repr((sql_str, param_tuple))
def __eq__(self, other):
return self.key == other.key