diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2023-03-10 21:05:35 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2023-03-10 21:05:35 +0000 |
| commit | 7f4df1625ef06cbfda5ca2db34984fd576506fff (patch) | |
| tree | 87678b76f0a1ece5644599aa83851db4cdbe4965 /lib/sqlalchemy | |
| parent | 3a7bd8405c3a5970ed295b4efdfa790c4a7d8875 (diff) | |
| parent | 2c9796b10c3e85450afdeedc4003607abda2f2db (diff) | |
| download | sqlalchemy-7f4df1625ef06cbfda5ca2db34984fd576506fff.tar.gz | |
Merge "repair broken lambda patch" into main
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/sql/lambdas.py | 15 |
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)) |
