summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2023-03-10 21:05:35 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2023-03-10 21:05:35 +0000
commit7f4df1625ef06cbfda5ca2db34984fd576506fff (patch)
tree87678b76f0a1ece5644599aa83851db4cdbe4965 /lib/sqlalchemy
parent3a7bd8405c3a5970ed295b4efdfa790c4a7d8875 (diff)
parent2c9796b10c3e85450afdeedc4003607abda2f2db (diff)
downloadsqlalchemy-7f4df1625ef06cbfda5ca2db34984fd576506fff.tar.gz
Merge "repair broken lambda patch" into main
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/sql/lambdas.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql/lambdas.py b/lib/sqlalchemy/sql/lambdas.py
index 04bf86ee6..12175c75d 100644
--- a/lib/sqlalchemy/sql/lambdas.py
+++ b/lib/sqlalchemy/sql/lambdas.py
@@ -272,11 +272,16 @@ class LambdaElement(elements.ClauseElement):
if rec is None:
if cache_key is not _cache_key.NO_CACHE:
- rec = AnalyzedFunction(
- tracker, self, apply_propagate_attrs, fn
- )
- rec.closure_bindparams = bindparams
- lambda_cache[tracker_key + cache_key] = rec
+ with AnalyzedCode._generation_mutex:
+ key = tracker_key + cache_key
+ if key not in lambda_cache:
+ rec = AnalyzedFunction(
+ tracker, self, apply_propagate_attrs, fn
+ )
+ rec.closure_bindparams = bindparams
+ lambda_cache[key] = rec
+ else:
+ rec = lambda_cache[key]
else:
rec = NonAnalyzedFunction(self._invoke_user_fn(fn))