Files
greptimedb/query/dist_plan/analyzer/utils/index.html
2026-05-15 04:01:35 +00:00

11 lines
8.1 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="API documentation for the Rust `utils` mod in crate `query`."><title>query::dist_plan::analyzer::utils - 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="query" 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 utils</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../../query/index.html">query</a><span class="version">1.0.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module utils</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#functions" title="Functions">Functions</a></li><li><a href="#types" title="Type Aliases">Type Aliases</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In query::<wbr>dist_<wbr>plan::<wbr>analyzer</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">query</a>::<wbr><a href="../../index.html">dist_plan</a>::<wbr><a href="../index.html">analyzer</a></div><h1>Module <span>utils</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/query/dist_plan/analyzer/utils.rs.html#15-947">Source</a> </span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.AliasLayer.html" title="struct query::dist_plan::analyzer::utils::AliasLayer">Alias<wbr>Layer</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="struct" href="struct.PatchOptimizerContext.html" title="struct query::dist_plan::analyzer::utils::PatchOptimizerContext">Patch<wbr>Optimizer<wbr>Context</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The <code>ConstEvaluator</code> in <code>SimplifyExpressions</code> might evaluate some UDFs early in the
planning stage, by executing them directly. For example, the <code>database()</code> function.
So the <code>ConfigOptions</code> here (which is set from the session context) should be present
in the UDFs <code>ScalarFunctionArgs</code>. However, the default implementation in DataFusion
seems to lost track on it: the <code>ConfigOptions</code> is recreated with its default values again.
So we create a custom <code>OptimizerConfig</code> with the desired <code>ConfigOptions</code>
to walk around the issue.
TODO(LFC): Maybe use DataFusions <code>OptimizerContext</code> again
once https://github.com/apache/datafusion/pull/17742 is merged.</dd><dt><a class="struct" href="struct.PlanTreeExpressionSimplifier.html" title="struct query::dist_plan::analyzer::utils::PlanTreeExpressionSimplifier">Plan<wbr>Tree<wbr>Expression<wbr>Simplifier</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Simplify all expressions recursively in the plan tree
which keeping the output schema unchanged</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.aliased_columns_for.html" title="fn query::dist_plan::analyzer::utils::aliased_columns_for">aliased_<wbr>columns_<wbr>for</a></dt><dd>Return all the aliased columns(at aliased node) for the given original columns(at original node)</dd><dt><a class="fn" href="fn.aliased_columns_for_inner.html" title="fn query::dist_plan::analyzer::utils::aliased_columns_for_inner">aliased_<wbr>columns_<wbr>for_<wbr>inner</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.get_alias_layer_from_exprs.html" title="fn query::dist_plan::analyzer::utils::get_alias_layer_from_exprs">get_<wbr>alias_<wbr>layer_<wbr>from_<wbr>exprs</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.get_alias_layer_from_node.html" title="fn query::dist_plan::analyzer::utils::get_alias_layer_from_node">get_<wbr>alias_<wbr>layer_<wbr>from_<wbr>node</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Return a mapping of original column to all the aliased columns in current node of the plan
TODO(discord9): also support merge scan node</dd><dt><a class="fn" href="fn.get_alias_original_column.html" title="fn query::dist_plan::analyzer::utils::get_alias_original_column">get_<wbr>alias_<wbr>original_<wbr>column</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.original_column_for.html" title="fn query::dist_plan::analyzer::utils::original_column_for">original_<wbr>column_<wbr>for</a></dt><dd>Return all the original columns(at original node) for the given aliased columns at the aliased node</dd><dt><a class="fn" href="fn.original_column_for_inner.html" title="fn query::dist_plan::analyzer::utils::original_column_for_inner">original_<wbr>column_<wbr>for_<wbr>inner</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.patch_batch_timezone.html" title="fn query::dist_plan::analyzer::utils::patch_batch_timezone">patch_<wbr>batch_<wbr>timezone</a></dt><dd>A patch for substrait simply throw timezone away, so when decoding, if columns have different timezone then expected schema, use expected schemas timezone</dd><dt><a class="fn" href="fn.rewrite_column.html" title="fn query::dist_plan::analyzer::utils::rewrite_column">rewrite_<wbr>column</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.rewrite_merge_sort_exprs.html" title="fn query::dist_plan::analyzer::utils::rewrite_merge_sort_exprs">rewrite_<wbr>merge_<wbr>sort_<wbr>exprs</a></dt><dd>Rewrite the expressions of the given merge sort plan from original columns(at merge sorts input plan) to aliased columns at the given aliased node</dd></dl><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><dl class="item-table"><dt><a class="type" href="type.AliasMapping.html" title="type query::dist_plan::analyzer::utils::AliasMapping">Alias<wbr>Mapping</a></dt><dd>Mapping of original column in table to all the alias at current node</dd></dl></section></div></main></body></html>