mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-09-10 07:22:17 +00:00
82 lines
26 KiB
HTML
82 lines
26 KiB
HTML
<!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="The entity-relationship graph: the physical declared-edge table DDL and the typed DataFusion plan builders for the read-time derivation behind the computed `semantic_entities` / `semantic_relationships` tables."><title>operator::statement::semantic_graph - 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="operator" 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 mod"><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="#">Module semantic_graph</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../operator/index.html">operator</a><span class="version">1.3.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module semantic_<wbr>graph</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#constants" title="Constants">Constants</a></li><li><a href="#statics" title="Statics">Statics</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In operator::<wbr>statement</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">operator</a>::<wbr><a href="../index.html">statement</a></div><h1>Module <span>semantic_<wbr>graph</span> <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/operator/statement/semantic_graph.rs.html#15-1181">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The entity-relationship graph: the physical declared-edge table DDL and the
|
||
typed DataFusion plan builders for the read-time derivation behind the
|
||
computed <code>semantic_entities</code> / <code>semantic_relationships</code> tables.</p>
|
||
<p>In OSS the graph is derived at read time, so the <em>only</em> stored part is the
|
||
declared-edge table: edges a user asserts by hand (<code>provenance = 'declared'</code>).</p>
|
||
<p>The derivation is built as typed [<code>Expr</code>]s over [<code>DataFrame</code>]s (never as SQL
|
||
text), so user-controlled identifiers are plain values — no quoting or SQL
|
||
injection surface — and the plans compose with DataFusion’s optimizer,
|
||
including filter pushdown into the source table scans. See
|
||
<code>docs/rfcs/2026-06-25-entity-relationships-and-graph-query.md</code>.</p>
|
||
</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="conventions/index.html" title="mod operator::statement::semantic_graph::conventions">conventions</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>The built-in derivation conventions of the entity graph, embedded as
|
||
<a href="./conventions.yaml"><code>conventions.yaml</code></a>: the co-declared edge vocabulary,
|
||
the virtual-destination candidates, and the implicit declarations of
|
||
well-known Prometheus entity-descriptor metrics. The file is data shipped
|
||
with the binary, not an operator-editable configuration surface; explicit
|
||
<code>greptime.semantic.entity.*</code> declarations always override it.</dd><dt><a class="mod" href="relationships/index.html" title="mod operator::statement::semantic_graph::relationships">relationships</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>The <code>semantic_relationships</code> derivation: the plan builders for every edge
|
||
branch behind the computed table — trace-derived service <code>calls</code> (with
|
||
virtual-node edges for unmatched clients), agent <code>calls</code> from span
|
||
structure, same-row co-declared edges, and the declared-edge union. Shared
|
||
expression helpers and the entity registry live in the parent module.</dd></dl><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.CallsSource.html" title="struct operator::statement::semantic_graph::CallsSource">Calls<wbr>Source</a></dt><dd>A trace table’s scan paired with the entity declarations its derivations
|
||
key on — a unit of <code>build_relationships_plan</code>. The <code>service</code> declaration
|
||
feeds service calls, the <code>agent</code> declaration agent calls; the two are
|
||
independent, so a table whose service declaration is unusable still
|
||
derives agent edges (and vice versa).</dd><dt><a class="struct" href="struct.CoDeclaredSource.html" title="struct operator::statement::semantic_graph::CoDeclaredSource">CoDeclared<wbr>Source</a></dt><dd>A declaring table’s scan paired with its entity declarations, from which
|
||
the same-row co-declaration rules derive edges. <code>is_trace</code> gates the
|
||
agent-edge vocabulary, which the RFC ties to span structure.</dd><dt><a class="struct" href="struct.Conventions.html" title="struct operator::statement::semantic_graph::Conventions">Conventions</a></dt><dd>The parsed, validated conventions file.</dd><dt><a class="struct" href="struct.DeclaredSource.html" title="struct operator::statement::semantic_graph::DeclaredSource">Declared<wbr>Source</a></dt><dd>The declared-edge table’s scan (<code>semantic_relationships_declared</code>), whose
|
||
rows <code>build_relationships_plan</code> unions into the edge set.</dd><dt><a class="struct" href="struct.EntityDeclaration.html" title="struct operator::statement::semantic_graph::EntityDeclaration">Entity<wbr>Declaration</a></dt><dd>A single table’s entity-identity declaration, projected from
|
||
<code>information_schema.table_semantics</code> (<code>greptime.semantic.entity.<type>.*</code>).</dd><dt><a class="struct" href="struct.GraphQueryWindow.html" title="struct operator::statement::semantic_graph::GraphQueryWindow">Graph<wbr>Query<wbr>Window</a></dt><dd>The read-time query window, resolved from the scan’s <code>observed_at</code> predicate
|
||
(or the product default). Two half-open <code>[start, end)</code> millisecond ranges:</dd><dt><a class="struct" href="struct.ImplicitEntity.html" title="struct operator::statement::semantic_graph::ImplicitEntity">Implicit<wbr>Entity</a></dt><dd>One implicit entity declaration: of a whitelisted Prometheus info metric,
|
||
or of a trace-v1 table’s flattened resource attributes.</dd><dt><a class="struct" href="struct.RegistrySource.html" title="struct operator::statement::semantic_graph::RegistrySource">Registry<wbr>Source</a></dt><dd>A declaring table’s scan paired with the entity declarations it carries —
|
||
the unit <code>build_registry_plan</code> derives registry rows from.</dd><dt><a class="struct" href="struct.RelationshipSources.html" title="struct operator::statement::semantic_graph::RelationshipSources">Relationship<wbr>Sources</a></dt><dd>Everything <code>build_relationships_plan</code> derives edges from.</dd></dl><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><dl class="item-table"><dt><a class="constant" href="constant.BIN_NANOS.html" title="constant operator::statement::semantic_graph::BIN_NANOS">BIN_<wbr>NANOS</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Bin width for the temporal window of derived rows: 60s buckets, matching the
|
||
service-graph convention.</dd><dt><a class="constant" href="constant.DECLARED_EDGE_IDENTITY_COLUMNS.html" title="constant operator::statement::semantic_graph::DECLARED_EDGE_IDENTITY_COLUMNS">DECLARED_<wbr>EDGE_<wbr>IDENTITY_<wbr>COLUMNS</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>The externally visible edge identity: the primary key minus <code>scope</code> and
|
||
<code>generation_id</code>, which the computed table does not expose. Revision ranking
|
||
uses this identity, or assertions differing only in those two columns would
|
||
surface as indistinguishable duplicate rows.</dd><dt><a class="constant" href="constant.DECLARED_PRIMARY_KEY_COLUMNS.html" title="constant operator::statement::semantic_graph::DECLARED_PRIMARY_KEY_COLUMNS">DECLARED_<wbr>PRIMARY_<wbr>KEY_<wbr>COLUMNS</a></dt><dd>The primary-key (tag) columns, in key order. Starting with the source endpoint
|
||
makes out-edge lookup (<code>WHERE src_type=? AND src_id=?</code>) a key-prefix scan;
|
||
<code>provenance</code> and <code>generation_id</code> are in the key so a declared edge and a
|
||
(future) derived edge for the same pair coexist without clobbering.</dd><dt><a class="constant" href="constant.DECLARED_RELATIONSHIPS_TTL_ENV.html" title="constant operator::statement::semantic_graph::DECLARED_RELATIONSHIPS_TTL_ENV">DECLARED_<wbr>RELATIONSHIPS_<wbr>TTL_<wbr>ENV</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Environment variable overriding the declared-edge table’s TTL at creation
|
||
time (e.g. <code>180d</code>, <code>forever</code>).</dd><dt><a class="constant" href="constant.DEFAULT_DECLARED_RELATIONSHIPS_TTL.html" title="constant operator::statement::semantic_graph::DEFAULT_DECLARED_RELATIONSHIPS_TTL">DEFAULT_<wbr>DECLARED_<wbr>RELATIONSHIPS_<wbr>TTL</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Default retention for the declared-edge table; expiry slides the topology window.</dd><dt><a class="constant" href="constant.ENTITY_TYPE_GEN_AI_AGENT.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_GEN_AI_AGENT">ENTITY_<wbr>TYPE_<wbr>GEN_<wbr>AI_<wbr>AGENT</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_GEN_AI_MODEL.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_GEN_AI_MODEL">ENTITY_<wbr>TYPE_<wbr>GEN_<wbr>AI_<wbr>MODEL</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_GEN_AI_TOOL.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_GEN_AI_TOOL">ENTITY_<wbr>TYPE_<wbr>GEN_<wbr>AI_<wbr>TOOL</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_HOST.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_HOST">ENTITY_<wbr>TYPE_<wbr>HOST</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_CONTAINER.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_CONTAINER">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>CONTAINER</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_NODE.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_NODE">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>NODE</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_POD.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_POD">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>POD</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_WORKLOAD.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_WORKLOAD">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>WORKLOAD</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_PROCESS.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_PROCESS">ENTITY_<wbr>TYPE_<wbr>PROCESS</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_SERVICE.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_SERVICE">ENTITY_<wbr>TYPE_<wbr>SERVICE</a></dt><dd>The built-in entity-type vocabulary. User-declared types are open-ended;
|
||
the embedded conventions file must stay inside this set.</dd><dt><a class="constant" href="constant.ENTITY_TYPE_SERVICE_INSTANCE.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_SERVICE_INSTANCE">ENTITY_<wbr>TYPE_<wbr>SERVICE_<wbr>INSTANCE</a></dt><dt><a class="constant" href="constant.PROVENANCE_AGENT.html" title="constant operator::statement::semantic_graph::PROVENANCE_AGENT">PROVENANCE_<wbr>AGENT</a></dt><dt><a class="constant" href="constant.PROVENANCE_ATTRIBUTE.html" title="constant operator::statement::semantic_graph::PROVENANCE_ATTRIBUTE">PROVENANCE_<wbr>ATTRIBUTE</a></dt><dt><a class="constant" href="constant.PROVENANCE_DECLARED.html" title="constant operator::statement::semantic_graph::PROVENANCE_DECLARED">PROVENANCE_<wbr>DECLARED</a></dt><dt><a class="constant" href="constant.PROVENANCE_TRACE.html" title="constant operator::statement::semantic_graph::PROVENANCE_TRACE">PROVENANCE_<wbr>TRACE</a></dt><dt><a class="constant" href="constant.REGISTRY_COLUMNS.html" title="constant operator::statement::semantic_graph::REGISTRY_COLUMNS">REGISTRY_<wbr>COLUMNS</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="constant" href="constant.REGISTRY_VALID_COLUMN.html" title="constant operator::statement::semantic_graph::REGISTRY_VALID_COLUMN">REGISTRY_<wbr>VALID_<wbr>COLUMN</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="constant" href="constant.REL_TYPE_CALLS.html" title="constant operator::statement::semantic_graph::REL_TYPE_CALLS">REL_<wbr>TYPE_<wbr>CALLS</a></dt><dd>The relationship vocabulary (the RFC’s rel_type table) and the edge
|
||
provenances.</dd><dt><a class="constant" href="constant.REL_TYPE_CONTAINS.html" title="constant operator::statement::semantic_graph::REL_TYPE_CONTAINS">REL_<wbr>TYPE_<wbr>CONTAINS</a></dt><dt><a class="constant" href="constant.REL_TYPE_DEPENDS_ON.html" title="constant operator::statement::semantic_graph::REL_TYPE_DEPENDS_ON">REL_<wbr>TYPE_<wbr>DEPENDS_<wbr>ON</a></dt><dt><a class="constant" href="constant.REL_TYPE_INVOKES.html" title="constant operator::statement::semantic_graph::REL_TYPE_INVOKES">REL_<wbr>TYPE_<wbr>INVOKES</a></dt><dt><a class="constant" href="constant.REL_TYPE_OWNS.html" title="constant operator::statement::semantic_graph::REL_TYPE_OWNS">REL_<wbr>TYPE_<wbr>OWNS</a></dt><dt><a class="constant" href="constant.REL_TYPE_PART_OF.html" title="constant operator::statement::semantic_graph::REL_TYPE_PART_OF">REL_<wbr>TYPE_<wbr>PART_<wbr>OF</a></dt><dt><a class="constant" href="constant.REL_TYPE_RUNS_ON.html" title="constant operator::statement::semantic_graph::REL_TYPE_RUNS_ON">REL_<wbr>TYPE_<wbr>RUNS_<wbr>ON</a></dt><dt><a class="constant" href="constant.REL_TYPE_USES.html" title="constant operator::statement::semantic_graph::REL_TYPE_USES">REL_<wbr>TYPE_<wbr>USES</a></dt></dl><h2 id="statics" class="section-header">Statics<a href="#statics" class="anchor">§</a></h2><dl class="item-table"><dt><a class="static" href="static.JSON_OBJECT_UDF.html" title="static operator::statement::semantic_graph::JSON_OBJECT_UDF">JSON_<wbr>OBJECT_<wbr>UDF</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>The <code>json_object</code> UDF, resolved like <a href="static.PARSE_JSON_UDF.html" title="static operator::statement::semantic_graph::PARSE_JSON_UDF"><code>PARSE_JSON_UDF</code></a>. It assembles the
|
||
JSONB binary directly from the value columns, so runtime values need no
|
||
JSON text escaping.</dd><dt><a class="static" href="static.PARSE_JSON_UDF.html" title="static operator::statement::semantic_graph::PARSE_JSON_UDF">PARSE_<wbr>JSON_<wbr>UDF</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>The <code>parse_json</code> UDF, shared by all derivation plans. Resolved from the
|
||
global registry once: the UDF is stateless (its <code>FunctionContext</code> is unused).</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.bin_interval.html" title="fn operator::statement::semantic_graph::bin_interval">bin_<wbr>interval</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.bin_ms.html" title="fn operator::statement::semantic_graph::bin_ms">bin_ms</a><span title="Restricted Visibility"> 🔒</span> </dt><dd><code>date_bin(60s, ts)</code> cast to millisecond precision, so the output schema is
|
||
deterministic regardless of the source column’s precision (trace tables are
|
||
nanosecond, metric tables millisecond).</dd><dt><a class="fn" href="fn.build_declared_relationships_expr.html" title="fn operator::statement::semantic_graph::build_declared_relationships_expr">build_<wbr>declared_<wbr>relationships_<wbr>expr</a></dt><dd>Builds the <code>CREATE TABLE</code> request for the declared-edge table. Columns mirror
|
||
the computed <code>semantic_relationships</code> shape (temporal window + endpoints +
|
||
provenance/confidence + RED metrics) plus the declared-only business validity
|
||
window (<code>valid_from</code> / <code>valid_until</code>), which — unlike TTL (physical retention)
|
||
— expresses whether a hand-declared edge is still in effect.</dd><dt><a class="fn" href="fn.build_registry_plan.html" title="fn operator::statement::semantic_graph::build_registry_plan">build_<wbr>registry_<wbr>plan</a></dt><dd>Builds the <code>semantic_entities</code> registry plan: one branch and source scan per
|
||
declaring table, filtered to <code>window</code>, then <code>UNION ALL</code> across source tables.
|
||
Returns <code>None</code> when nothing declared an entity, so the computed table streams
|
||
empty.</dd><dt><a class="fn" href="fn.build_relationships_plan.html" title="fn operator::statement::semantic_graph::build_relationships_plan">build_<wbr>relationships_<wbr>plan</a></dt><dd>Builds the <code>semantic_relationships</code> plan: the service-calls, agent-calls,
|
||
co-declared, and declared-edge branches unioned and re-projected to the
|
||
16-column contract. Returns <code>None</code> when no source can contribute edges, so
|
||
the computed table streams empty.</dd><dt><a class="fn" href="fn.cast_string_or_empty.html" title="fn operator::statement::semantic_graph::cast_string_or_empty">cast_<wbr>string_<wbr>or_<wbr>empty</a><span title="Restricted Visibility"> 🔒</span> </dt><dd><code>coalesce(CAST(column AS STRING), '')</code>: renders a nullable column for string
|
||
concatenation without collapsing the result to NULL.</dd><dt><a class="fn" href="fn.column.html" title="fn operator::statement::semantic_graph::column">column</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.concat_expr.html" title="fn operator::statement::semantic_graph::concat_expr">concat_<wbr>expr</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.conventions.html" title="fn operator::statement::semantic_graph::conventions">conventions</a></dt><dd>The embedded conventions. <code>Err</code> means the embedded file is broken — pinned
|
||
by unit test, and propagated by the derivation paths rather than panicking.</dd><dt><a class="fn" href="fn.declared_relationships_schema_matches.html" title="fn operator::statement::semantic_graph::declared_relationships_schema_matches">declared_<wbr>relationships_<wbr>schema_<wbr>matches</a></dt><dd>Whether an existing declared-edge table still matches the canonical
|
||
definition (<a href="fn.build_declared_relationships_expr.html" title="fn operator::statement::semantic_graph::build_declared_relationships_expr"><code>build_declared_relationships_expr</code></a>): columns, time index,
|
||
primary key, engine, and merge behaviour — the union branch’s revision and
|
||
dedup semantics lean on all of these. A mismatch (upgrade skew) must be
|
||
surfaced, not silently derived wrong; DROP resets the table.</dd><dt><a class="fn" href="fn.declared_relationships_ttl.html" title="fn operator::statement::semantic_graph::declared_relationships_ttl">declared_<wbr>relationships_<wbr>ttl</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.entity_id_expr.html" title="fn operator::statement::semantic_graph::entity_id_expr">entity_<wbr>id_<wbr>expr</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.field.html" title="fn operator::statement::semantic_graph::field">field</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.identifies.html" title="fn operator::statement::semantic_graph::identifies">identifies</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>The canonical entity-id expression for <code>id_columns</code>: the value verbatim for
|
||
a single column, the sorted <code>k=v,k=v</code> rendering for a composite. <code>col</code>
|
||
constructs the column reference (unqualified for registry branches,
|
||
join-side-qualified for the calls derivation).
|
||
A row identifies an entity only when every identity component is present
|
||
and non-empty: kube-state-metrics descriptors emit empty-string labels (an
|
||
unscheduled pod’s <code>node</code>, an owner-less pod’s <code>owner_*</code>), and an empty
|
||
string is never a meaningful entity id.</dd><dt><a class="fn" href="fn.interval.html" title="fn operator::statement::semantic_graph::interval">interval</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>An <code>INTERVAL</code> literal of <code>nanos</code> nanoseconds.</dd><dt><a class="fn" href="fn.json_field.html" title="fn operator::statement::semantic_graph::json_field">json_<wbr>field</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.json_object_expr.html" title="fn operator::statement::semantic_graph::json_object_expr">json_<wbr>object_<wbr>expr</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Builds a JSONB object with one entry per column: key = the column name,
|
||
value = the column rendered as a string, NULL coalesced to <code>""</code> so one NULL
|
||
column does not null the entry (descriptive columns are nullable). Keys come
|
||
out sorted — JSONB objects are key-ordered regardless of input order.</dd><dt><a class="fn" href="fn.json_quote.html" title="fn operator::statement::semantic_graph::json_quote">json_<wbr>quote</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Renders a compile-time-known string as JSON text (quoted, fully escaped).</dd><dt><a class="fn" href="fn.null_json.html" title="fn operator::statement::semantic_graph::null_json">null_<wbr>json</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>A NULL literal typed as JSONB storage (<code>Binary</code>), so branches without a JSON
|
||
value union-align with branches that produce one.</dd><dt><a class="fn" href="fn.parse_json_expr.html" title="fn operator::statement::semantic_graph::parse_json_expr">parse_<wbr>json_<wbr>expr</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Parses a JSON text expression into a JSONB value, cast from the UDF’s
|
||
<code>BinaryView</code> output to <code>Binary</code> — the storage type the computed tables’
|
||
declared <code>json</code> columns map to in Arrow.</dd><dt><a class="fn" href="fn.qcol.html" title="fn operator::statement::semantic_graph::qcol">qcol</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>A column reference qualified by a join-side alias, built without string
|
||
parsing (so column names containing <code>.</code> or <code>"</code> stay verbatim).</dd><dt><a class="fn" href="fn.registry_source.html" title="fn operator::statement::semantic_graph::registry_source">registry_<wbr>source</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Projects all entity declarations of one source table with one source scan
|
||
via <a href="fn.unnest_rows.html" title="fn operator::statement::semantic_graph::unnest_rows"><code>unnest_rows</code></a>.</dd><dt><a class="fn" href="fn.sorted_kv_expr_with.html" title="fn operator::statement::semantic_graph::sorted_kv_expr_with">sorted_<wbr>kv_<wbr>expr_<wbr>with</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Renders pre-sorted columns as a <code>k=v,k=v</code> concatenation. <code>nullable</code>
|
||
coalesces each value to <code>''</code> (id columns are tags and non-null; scope
|
||
columns carry no such guarantee).</dd><dt><a class="fn" href="fn.tag.html" title="fn operator::statement::semantic_graph::tag">tag</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.ts_ms_lit.html" title="fn operator::statement::semantic_graph::ts_ms_lit">ts_<wbr>ms_<wbr>lit</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.union_all.html" title="fn operator::statement::semantic_graph::union_all">union_<wbr>all</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Folds union branches without requiring a non-empty input.</dd><dt><a class="fn" href="fn.unnest_rows.html" title="fn operator::statement::semantic_graph::unnest_rows">unnest_<wbr>rows</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Expands one source row into one output row per entry of <code>rows</code> with a
|
||
single source scan: each output field is first built as an array whose
|
||
entries correspond to the rows, then unnested. Every row is <code>[valid, values...]</code> aligned with <code>columns</code>; rows whose <code>valid</code> expression is false
|
||
are dropped, and the distinct output columns are <code>columns</code>.</dd></dl></section></div></main></body></html> |