Files
greptimedb/flow/df_optimizer/index.html
2025-12-25 05:03:15 +00:00

5 lines
6.7 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="Datafusion optimizer for flow plan"><title>flow::df_optimizer - 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-e56847b5.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="flow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (fa3155a64 2025-09-30)" data-channel="nightly" data-search-js="search-e256b49e.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.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"><!--[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 df_optimizer</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../flow/index.html">flow</a><span class="version">1.0.0-beta.3</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module df_<wbr>optimizer</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></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate flow</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"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">flow</a></div><h1>Module <span>df_<wbr>optimizer</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/flow/df_optimizer.rs.html#15-593">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Datafusion optimizer for flow plan</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.AvgExpandRule.html" title="struct flow::df_optimizer::AvgExpandRule">AvgExpand<wbr>Rule</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="struct" href="struct.CheckGroupByRule.html" title="struct flow::df_optimizer::CheckGroupByRule">Check<wbr>Group<wbr>ByRule</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>This rule check all group by exprs, and make sure they are also in select clause in a aggr query</dd><dt><a class="struct" href="struct.ExpandAvgRewriter.html" title="struct flow::df_optimizer::ExpandAvgRewriter">Expand<wbr>AvgRewriter</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>rewrite <code>avg(&lt;expr&gt;)</code> function into <code>CASE WHEN count(&lt;expr&gt;) !=0 THEN cast(sum((&lt;expr&gt;) AS avg_return_type)/count((&lt;expr&gt;) ELSE 0</code></dd><dt><a class="struct" href="struct.FindColumn.html" title="struct flow::df_optimizer::FindColumn">Find<wbr>Column</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Find all column names in a plan</dd><dt><a class="struct" href="struct.TumbleExpand.html" title="struct flow::df_optimizer::TumbleExpand">Tumble<wbr>Expand</a></dt><dd>This is a placeholder for tumble_start and tumble_end function, so that datafusion can
recognize them as scalar function</dd><dt><a class="struct" href="struct.TumbleExpandRule.html" title="struct flow::df_optimizer::TumbleExpandRule">Tumble<wbr>Expand<wbr>Rule</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>expand tumble in aggr expr to tumble_start and tumble_end with column name like <code>window_start</code></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.apply_df_optimizer.html" title="fn flow::df_optimizer::apply_df_optimizer">apply_<wbr>df_<wbr>optimizer</a></dt><dt><a class="fn" href="fn.check_group_by_analyzer.html" title="fn flow::df_optimizer::check_group_by_analyzer">check_<wbr>group_<wbr>by_<wbr>analyzer</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>make sure everything in group bys expr is in select</dd><dt><a class="fn" href="fn.expand_avg_analyzer.html" title="fn flow::df_optimizer::expand_avg_analyzer">expand_<wbr>avg_<wbr>analyzer</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>expand <code>avg(&lt;expr&gt;)</code> function into <code>cast(sum((&lt;expr&gt;) AS f64)/count((&lt;expr&gt;)</code></dd><dt><a class="fn" href="fn.expand_tumble_analyzer.html" title="fn flow::df_optimizer::expand_tumble_analyzer">expand_<wbr>tumble_<wbr>analyzer</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>expand <code>tumble</code> in aggr expr to <code>tumble_start</code> and <code>tumble_end</code>, also expand related alias and column ref</dd><dt><a class="fn" href="fn.put_aggr_to_proj_analyzer.html" title="fn flow::df_optimizer::put_aggr_to_proj_analyzer">put_<wbr>aggr_<wbr>to_<wbr>proj_<wbr>analyzer</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>lift aggrs composite aggr_expr to outer proj, and leave aggr only with simple direct aggr expr
i.e.</dd><dt><a class="fn" href="fn.sql_to_flow_plan.html" title="fn flow::df_optimizer::sql_to_flow_plan">sql_<wbr>to_<wbr>flow_<wbr>plan</a></dt><dd>To reuse existing code for parse sql, the sql is first parsed into a datafusion logical plan,
then to a substrait plan, and finally to a flow plan.</dd></dl></section></div></main></body></html>