Files
greptimedb/common_function/function_registry/fn.register_admin_function_in.html
T

19 lines
5.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Core implementation of `register_admin_function` against a pair of registries, parameterized so tests can exercise it with local registries."><title>register_admin_function_in in common_function::function_registry - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="common_function" data-themes="" data-resource-suffix="" data-rustdoc-version="1.96.0-nightly (ac7f9ec7d 2026-03-20)" data-channel="nightly" data-search-js="search-63369b7b.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../static.files/storage-41dd4d93.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-5013f961.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc fn"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">register_admin_function_in</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../common_function/index.html">common_<wbr>function</a><span class="version">1.3.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In common_<wbr>function::<wbr>function_<wbr>registry</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">common_function</a>::<wbr><a href="index.html">function_registry</a></div><h1>Function <span class="fn">register_<wbr>admin_<wbr>function_<wbr>in</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/common_function/function_registry.rs.html#306-334">Source</a> </span></div><pre class="rust item-decl"><code>fn register_admin_function_in(
admin_registry: &amp;<a class="struct" href="struct.FunctionRegistry.html" title="struct common_function::function_registry::FunctionRegistry">FunctionRegistry</a>,
normal_registry: &amp;<a class="struct" href="struct.FunctionRegistry.html" title="struct common_function::function_registry::FunctionRegistry">FunctionRegistry</a>,
func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="../function_factory/struct.ScalarFunctionFactory.html" title="struct common_function::function_factory::ScalarFunctionFactory">ScalarFunctionFactory</a>&gt;,
) -&gt; <a class="enum" href="enum.FunctionRegistrationResult.html" title="enum common_function::function_registry::FunctionRegistrationResult">FunctionRegistrationResult</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Core implementation of <a href="fn.register_admin_function.html" title="fn common_function::function_registry::register_admin_function"><code>register_admin_function</code></a> against a pair of
registries, parameterized so tests can exercise it with local registries.</p>
<p>Locking: the ADMIN-registry write lock is acquired first, then a read lock
on the normal registry, and the normal-registry guard (bound to
<code>normal_functions</code>) is kept alive through both the normal-name check and
the ADMIN insertion below. This is the only code path that holds both
registries locks, so the ADMIN -&gt; FUNCTION acquisition order is
consistent and a concurrent normal-registry registration cannot slip in
between the check and the ADMIN insert and be shadowed.</p>
<p>The enforced contract is one-way: it only guards the ADMIN registration
against names already present in the normal registry. A later ordinary
<a href="struct.FunctionRegistry.html#method.register" title="method common_function::function_registry::FunctionRegistry::register"><code>FunctionRegistry::register</code></a> may still install the same name in the
normal registry because the normal registry keeps its legacy replace
semantics.</p>
</div></details></section></div></main></body></html>