diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
| commit | 4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch) | |
| tree | 1682a647d4463397c119183369ae6f750d5fdcff /src/mongo/db/pipeline/javascript_execution.cpp | |
| parent | aa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff) | |
| parent | 8f0827553e09872941945a093b647a4211a9db7f (diff) | |
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0'
with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'src/mongo/db/pipeline/javascript_execution.cpp')
| -rw-r--r-- | src/mongo/db/pipeline/javascript_execution.cpp | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/src/mongo/db/pipeline/javascript_execution.cpp b/src/mongo/db/pipeline/javascript_execution.cpp index 8b6d3bc6f9b..f9ce429ba76 100644 --- a/src/mongo/db/pipeline/javascript_execution.cpp +++ b/src/mongo/db/pipeline/javascript_execution.cpp @@ -47,35 +47,20 @@ JsExecution* JsExecution::get(OperationContext* opCtx, StringData database, bool loadStoredProcedures, boost::optional<int> jsHeapLimitMB) { - // If a JsExecution object has already been created, return it. - JsExecution* jsExec = getCached(opCtx, loadStoredProcedures); - if (jsExec) { - return jsExec; - } - - // There is no cached JsExecution object, so create and cache one now. auto& exec = getExec(opCtx); - exec = std::make_unique<JsExecution>(opCtx, scope, jsHeapLimitMB); - exec->getScope()->setLocalDB(database); - if (loadStoredProcedures) { - exec->getScope()->loadStored(opCtx, true); - } - exec->_storedProceduresLoaded = loadStoredProcedures; - - return exec.get(); -} - -JsExecution* JsExecution::getCached(OperationContext* opCtx, bool loadStoredProcedures) { - auto& exec = getExec(opCtx); - if (exec) { - if (loadStoredProcedures == exec->_storedProceduresLoaded) { - return exec.get(); + if (!exec) { + exec = std::make_unique<JsExecution>(opCtx, scope, jsHeapLimitMB); + exec->getScope()->setLocalDB(database); + if (loadStoredProcedures) { + exec->getScope()->loadStored(opCtx, true); } - tasserted( - 9136200, - "A single operation cannot use both JavaScript aggregation expressions and $where."); + exec->_storedProceduresLoaded = loadStoredProcedures; + } else { + uassert(31438, + "A single operation cannot use both JavaScript aggregation expressions and $where.", + loadStoredProcedures == exec->_storedProceduresLoaded); } - return nullptr; + return exec.get(); } Value JsExecution::callFunction(ScriptingFunction func, |
