This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 2316ebf24b Publish built docs triggered by
ff774c6c3ce3349aaa9f778b3843fc94908504b8
2316ebf24b is described below
commit 2316ebf24b75046c8acae739cb836034e9574fcc
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Jul 14 06:54:31 2026 +0000
Publish built docs triggered by ff774c6c3ce3349aaa9f778b3843fc94908504b8
---
.../library-user-guide/upgrading/55.0.0.md.txt | 68 +++++++++++---------
library-user-guide/upgrading/55.0.0.html | 73 +++++++++++++---------
searchindex.js | 2 +-
3 files changed, 81 insertions(+), 62 deletions(-)
diff --git a/_sources/library-user-guide/upgrading/55.0.0.md.txt
b/_sources/library-user-guide/upgrading/55.0.0.md.txt
index 181e0e0b7f..f7d2745549 100644
--- a/_sources/library-user-guide/upgrading/55.0.0.md.txt
+++ b/_sources/library-user-guide/upgrading/55.0.0.md.txt
@@ -295,37 +295,42 @@ as a supertrait:
+ pub trait QueryPlanner: Any + Debug
```
-### `ExecutionPlan::partition_statistics` deprecated in favor of
`statistics_with_args`
+### `ExecutionPlan::partition_statistics` deprecated in favor of
`statistics_from_inputs`
-`ExecutionPlan::partition_statistics` is deprecated. A new method
-`statistics_with_args` accepts a `StatisticsArgs` parameter that carries
-the partition index and a shared cache for memoized child statistics lookups.
+`ExecutionPlan::partition_statistics` is deprecated. Statistics computation is
+now split into two parts:
+
+- `StatisticsContext` owns the bottom-up plan-tree traversal and a per-walk
+ cache of memoized child statistics. Call `StatisticsContext::compute` to
+ obtain statistics for a plan.
+- `ExecutionPlan::statistics_from_inputs` computes a node's statistics from its
+ children's already-resolved statistics, which the context passes in. The node
+ does not traverse the tree itself.
Existing implementations of `partition_statistics` continue to work unchanged.
-The default `statistics_with_args` delegates to the deprecated method, so no
+The default `statistics_from_inputs` delegates to the deprecated method, so no
migration is required until the deprecated method is removed.
-> **Warning:** The delegation is **one-way**: the default
`statistics_with_args`
+> **Warning:** The delegation is **one-way**: the default
`statistics_from_inputs`
> calls `partition_statistics`, but the default `partition_statistics` does
-> **not** call `statistics_with_args` — it returns `Statistics::new_unknown`.
-> Nodes that override only `statistics_with_args` will silently return
+> **not** call `statistics_from_inputs` — it returns `Statistics::new_unknown`.
+> Nodes that override only `statistics_from_inputs` will silently return
> `Statistics::new_unknown` to any caller still using the deprecated
> `partition_statistics`.
**Who is affected:**
- Users who implement custom `ExecutionPlan` nodes (recommended to migrate)
-- Users who call `partition_statistics` directly (recommended to switch to
`statistics_with_args`)
+- Users who call `partition_statistics` directly (recommended to switch to
`StatisticsContext::compute`)
**Migration guide:**
-For **implementations**, override `statistics_with_args` instead of
-`partition_statistics`. Leaf nodes that do not have children can ignore
-the args.
-
-Child statistics are looked up via `args.compute_child_statistics(child,
partition)`.
-Use `args.partition()` for partition-preserving operators, or `None` for
-partition-merging operators that always need overall stats:
+For **implementations**, override `statistics_from_inputs` instead of
+`partition_statistics`, plus `child_stats_requests` to declare which children
to
+resolve. Child statistics then arrive pre-computed in `input_stats` (one entry
per
+child, in `children()` order), so the node only expresses its local propagation
+logic. Leaf nodes, and nodes that derive their statistics without reading
children,
+need neither override (the default `child_stats_requests` skips every child).
```rust,ignore
// Before:
@@ -334,36 +339,39 @@ fn partition_statistics(&self, partition: Option<usize>)
-> Result<Arc<Statistic
// ... transform child_stats ...
}
-// After (partition-preserving):
-fn statistics_with_args(
- &self,
- args: &StatisticsArgs,
-) -> Result<Arc<Statistics>> {
- let child_stats = args.compute_child_statistics(&self.input,
args.partition())?;
- // ... transform child_stats ...
+// After: declare the child to resolve, then compute from its statistics.
+fn child_stats_requests(&self, partition: Option<usize>) -> Vec<ChildStats> {
+ vec![ChildStats::At(partition)]
}
-// After (partition-merging):
-fn statistics_with_args(
+fn statistics_from_inputs(
&self,
+ input_stats: &[Arc<Statistics>],
args: &StatisticsArgs,
) -> Result<Arc<Statistics>> {
- let child_stats = args.compute_child_statistics(&self.input, None)?;
+ let child_stats = Arc::clone(&input_stats[0]);
// ... transform child_stats ...
}
```
-For **callers**, create a `StatisticsArgs` and call `statistics_with_args`
-directly. The cache is created automatically:
+> **Important:** the default `child_stats_requests` skips every child, so a
node that
+> reads `input_stats` must override it to declare the children it uses, or
those slots
+> are filled with `Statistics::new_unknown` placeholders. Request a child with
+> `ChildStats::At(partition)` (`None` = overall) and omit one with
`ChildStats::Skip`.
+> For example, a partition-merging operator requests `ChildStats::At(None)`,
and a
+> broadcast join requests its build side at `None`.
+
+For **callers**, walk a plan through `StatisticsContext::compute`. The cache is
+created with the context:
```rust,ignore
-use datafusion_physical_plan::StatisticsArgs;
+use datafusion_physical_plan::{StatisticsArgs, StatisticsContext};
// Before:
let stats = plan.partition_statistics(None)?;
// After:
-let stats = plan.statistics_with_args(&StatisticsArgs::new())?;
+let stats = StatisticsContext::new().compute(plan.as_ref(),
&StatisticsArgs::new())?;
```
### `DdlStatement::CreateExternalTable` and `CreateFunction` are now boxed
diff --git a/library-user-guide/upgrading/55.0.0.html
b/library-user-guide/upgrading/55.0.0.html
index e7262d9073..ad4d20fe6c 100644
--- a/library-user-guide/upgrading/55.0.0.html
+++ b/library-user-guide/upgrading/55.0.0.html
@@ -680,68 +680,79 @@ as a supertrait:</p>
</pre></div>
</div>
</section>
-<section
id="executionplan-partition-statistics-deprecated-in-favor-of-statistics-with-args">
-<h3><code class="docutils literal notranslate"><span
class="pre">ExecutionPlan::partition_statistics</span></code> deprecated in
favor of <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code><a class="headerlink"
href="#executionplan-partition-statistics-deprecated-in-favor-of-statistics-with-args"
title="Link to this heading">#</a></h3>
-<p><code class="docutils literal notranslate"><span
class="pre">ExecutionPlan::partition_statistics</span></code> is deprecated. A
new method
-<code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code> accepts a <code class="docutils
literal notranslate"><span class="pre">StatisticsArgs</span></code> parameter
that carries
-the partition index and a shared cache for memoized child statistics
lookups.</p>
+<section
id="executionplan-partition-statistics-deprecated-in-favor-of-statistics-from-inputs">
+<h3><code class="docutils literal notranslate"><span
class="pre">ExecutionPlan::partition_statistics</span></code> deprecated in
favor of <code class="docutils literal notranslate"><span
class="pre">statistics_from_inputs</span></code><a class="headerlink"
href="#executionplan-partition-statistics-deprecated-in-favor-of-statistics-from-inputs"
title="Link to this heading">#</a></h3>
+<p><code class="docutils literal notranslate"><span
class="pre">ExecutionPlan::partition_statistics</span></code> is deprecated.
Statistics computation is
+now split into two parts:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">StatisticsContext</span></code> owns the bottom-up plan-tree
traversal and a per-walk
+cache of memoized child statistics. Call <code class="docutils literal
notranslate"><span class="pre">StatisticsContext::compute</span></code> to
+obtain statistics for a plan.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">ExecutionPlan::statistics_from_inputs</span></code> computes a
node’s statistics from its
+children’s already-resolved statistics, which the context passes in. The node
+does not traverse the tree itself.</p></li>
+</ul>
<p>Existing implementations of <code class="docutils literal
notranslate"><span class="pre">partition_statistics</span></code> continue to
work unchanged.
-The default <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code> delegates to the deprecated
method, so no
+The default <code class="docutils literal notranslate"><span
class="pre">statistics_from_inputs</span></code> delegates to the deprecated
method, so no
migration is required until the deprecated method is removed.</p>
<blockquote>
-<div><p><strong>Warning:</strong> The delegation is <strong>one-way</strong>:
the default <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code>
+<div><p><strong>Warning:</strong> The delegation is <strong>one-way</strong>:
the default <code class="docutils literal notranslate"><span
class="pre">statistics_from_inputs</span></code>
calls <code class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code>, but the default <code
class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code> does
-<strong>not</strong> call <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code> — it returns <code
class="docutils literal notranslate"><span
class="pre">Statistics::new_unknown</span></code>.
-Nodes that override only <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code> will silently return
+<strong>not</strong> call <code class="docutils literal notranslate"><span
class="pre">statistics_from_inputs</span></code> — it returns <code
class="docutils literal notranslate"><span
class="pre">Statistics::new_unknown</span></code>.
+Nodes that override only <code class="docutils literal notranslate"><span
class="pre">statistics_from_inputs</span></code> will silently return
<code class="docutils literal notranslate"><span
class="pre">Statistics::new_unknown</span></code> to any caller still using the
deprecated
<code class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code>.</p>
</div></blockquote>
<p><strong>Who is affected:</strong></p>
<ul class="simple">
<li><p>Users who implement custom <code class="docutils literal
notranslate"><span class="pre">ExecutionPlan</span></code> nodes (recommended
to migrate)</p></li>
-<li><p>Users who call <code class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code> directly (recommended to switch
to <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code>)</p></li>
+<li><p>Users who call <code class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code> directly (recommended to switch
to <code class="docutils literal notranslate"><span
class="pre">StatisticsContext::compute</span></code>)</p></li>
</ul>
<p><strong>Migration guide:</strong></p>
-<p>For <strong>implementations</strong>, override <code class="docutils
literal notranslate"><span class="pre">statistics_with_args</span></code>
instead of
-<code class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code>. Leaf nodes that do not have
children can ignore
-the args.</p>
-<p>Child statistics are looked up via <code class="docutils literal
notranslate"><span class="pre">args.compute_child_statistics(child,</span>
<span class="pre">partition)</span></code>.
-Use <code class="docutils literal notranslate"><span
class="pre">args.partition()</span></code> for partition-preserving operators,
or <code class="docutils literal notranslate"><span
class="pre">None</span></code> for
-partition-merging operators that always need overall stats:</p>
+<p>For <strong>implementations</strong>, override <code class="docutils
literal notranslate"><span class="pre">statistics_from_inputs</span></code>
instead of
+<code class="docutils literal notranslate"><span
class="pre">partition_statistics</span></code>, plus <code class="docutils
literal notranslate"><span class="pre">child_stats_requests</span></code> to
declare which children to
+resolve. Child statistics then arrive pre-computed in <code class="docutils
literal notranslate"><span class="pre">input_stats</span></code> (one entry per
+child, in <code class="docutils literal notranslate"><span
class="pre">children()</span></code> order), so the node only expresses its
local propagation
+logic. Leaf nodes, and nodes that derive their statistics without reading
children,
+need neither override (the default <code class="docutils literal
notranslate"><span class="pre">child_stats_requests</span></code> skips every
child).</p>
<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="c1">// Before:</span>
<span class="k">fn</span><span class="w"> </span><span
class="nf">partition_statistics</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">,</span><span
class="w"> </span><span class="n">partition</span><span class="p">:</span><span
class="w"> </span><span class="nb">Option</span><span
class="o"><</span><span class="kt">usize</span><span
class="o">></span><span class="p">)</span><span class="w"> </span><span
class="p">-></span><s [...]
<span class="w"> </span><span class="kd">let</span><span class="w">
</span><span class="n">child_stats</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="bp">self</span><span
class="p">.</span><span class="n">input</span><span class="p">.</span><span
class="n">partition_statistics</span><span class="p">(</span><span
class="n">partition</span><span class="p">)</span><span class="o">?</span><span
class="p">;</span>
<span class="w"> </span><span class="c1">// ... transform child_stats
...</span>
<span class="p">}</span>
-<span class="c1">// After (partition-preserving):</span>
-<span class="k">fn</span><span class="w"> </span><span
class="nf">statistics_with_args</span><span class="p">(</span>
-<span class="w"> </span><span class="o">&</span><span
class="bp">self</span><span class="p">,</span>
-<span class="w"> </span><span class="n">args</span><span
class="p">:</span><span class="w"> </span><span class="kp">&</span><span
class="nc">StatisticsArgs</span><span class="p">,</span>
-<span class="p">)</span><span class="w"> </span><span
class="p">-></span><span class="w"> </span><span
class="nb">Result</span><span class="o"><</span><span
class="n">Arc</span><span class="o"><</span><span
class="n">Statistics</span><span class="o">>></span><span class="w">
</span><span class="p">{</span>
-<span class="w"> </span><span class="kd">let</span><span class="w">
</span><span class="n">child_stats</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="n">args</span><span
class="p">.</span><span class="n">compute_child_statistics</span><span
class="p">(</span><span class="o">&</span><span class="bp">self</span><span
class="p">.</span><span class="n">input</span><span class="p">,</span><span
class="w"> </span><span class="n">args</span><sp [...]
-<span class="w"> </span><span class="c1">// ... transform child_stats
...</span>
+<span class="c1">// After: declare the child to resolve, then compute from its
statistics.</span>
+<span class="k">fn</span><span class="w"> </span><span
class="nf">child_stats_requests</span><span class="p">(</span><span
class="o">&</span><span class="bp">self</span><span class="p">,</span><span
class="w"> </span><span class="n">partition</span><span class="p">:</span><span
class="w"> </span><span class="nb">Option</span><span
class="o"><</span><span class="kt">usize</span><span
class="o">></span><span class="p">)</span><span class="w"> </span><span
class="p">-></span><s [...]
+<span class="w"> </span><span class="fm">vec!</span><span
class="p">[</span><span class="n">ChildStats</span><span
class="p">::</span><span class="n">At</span><span class="p">(</span><span
class="n">partition</span><span class="p">)]</span>
<span class="p">}</span>
-<span class="c1">// After (partition-merging):</span>
-<span class="k">fn</span><span class="w"> </span><span
class="nf">statistics_with_args</span><span class="p">(</span>
+<span class="k">fn</span><span class="w"> </span><span
class="nf">statistics_from_inputs</span><span class="p">(</span>
<span class="w"> </span><span class="o">&</span><span
class="bp">self</span><span class="p">,</span>
+<span class="w"> </span><span class="n">input_stats</span><span
class="p">:</span><span class="w"> </span><span class="kp">&</span><span
class="p">[</span><span class="n">Arc</span><span class="o"><</span><span
class="n">Statistics</span><span class="o">></span><span class="p">],</span>
<span class="w"> </span><span class="n">args</span><span
class="p">:</span><span class="w"> </span><span class="kp">&</span><span
class="nc">StatisticsArgs</span><span class="p">,</span>
<span class="p">)</span><span class="w"> </span><span
class="p">-></span><span class="w"> </span><span
class="nb">Result</span><span class="o"><</span><span
class="n">Arc</span><span class="o"><</span><span
class="n">Statistics</span><span class="o">>></span><span class="w">
</span><span class="p">{</span>
-<span class="w"> </span><span class="kd">let</span><span class="w">
</span><span class="n">child_stats</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="n">args</span><span
class="p">.</span><span class="n">compute_child_statistics</span><span
class="p">(</span><span class="o">&</span><span class="bp">self</span><span
class="p">.</span><span class="n">input</span><span class="p">,</span><span
class="w"> </span><span class="nb">None</span><s [...]
+<span class="w"> </span><span class="kd">let</span><span class="w">
</span><span class="n">child_stats</span><span class="w"> </span><span
class="o">=</span><span class="w"> </span><span class="n">Arc</span><span
class="p">::</span><span class="n">clone</span><span class="p">(</span><span
class="o">&</span><span class="n">input_stats</span><span
class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="w"> </span><span class="c1">// ... transform child_stats
...</span>
<span class="p">}</span>
</pre></div>
</div>
-<p>For <strong>callers</strong>, create a <code class="docutils literal
notranslate"><span class="pre">StatisticsArgs</span></code> and call <code
class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code>
-directly. The cache is created automatically:</p>
-<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="k">use</span><span class="w">
</span><span class="n">datafusion_physical_plan</span><span
class="p">::</span><span class="n">StatisticsArgs</span><span class="p">;</span>
+<blockquote>
+<div><p><strong>Important:</strong> the default <code class="docutils literal
notranslate"><span class="pre">child_stats_requests</span></code> skips every
child, so a node that
+reads <code class="docutils literal notranslate"><span
class="pre">input_stats</span></code> must override it to declare the children
it uses, or those slots
+are filled with <code class="docutils literal notranslate"><span
class="pre">Statistics::new_unknown</span></code> placeholders. Request a child
with
+<code class="docutils literal notranslate"><span
class="pre">ChildStats::At(partition)</span></code> (<code class="docutils
literal notranslate"><span class="pre">None</span></code> = overall) and omit
one with <code class="docutils literal notranslate"><span
class="pre">ChildStats::Skip</span></code>.
+For example, a partition-merging operator requests <code class="docutils
literal notranslate"><span class="pre">ChildStats::At(None)</span></code>, and a
+broadcast join requests its build side at <code class="docutils literal
notranslate"><span class="pre">None</span></code>.</p>
+</div></blockquote>
+<p>For <strong>callers</strong>, walk a plan through <code class="docutils
literal notranslate"><span
class="pre">StatisticsContext::compute</span></code>. The cache is
+created with the context:</p>
+<div class="highlight-rust notranslate"><div
class="highlight"><pre><span></span><span class="k">use</span><span class="w">
</span><span class="n">datafusion_physical_plan</span><span
class="p">::{</span><span class="n">StatisticsArgs</span><span
class="p">,</span><span class="w"> </span><span
class="n">StatisticsContext</span><span class="p">};</span>
<span class="c1">// Before:</span>
<span class="kd">let</span><span class="w"> </span><span
class="n">stats</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">plan</span><span class="p">.</span><span
class="n">partition_statistics</span><span class="p">(</span><span
class="nb">None</span><span class="p">)</span><span class="o">?</span><span
class="p">;</span>
<span class="c1">// After:</span>
-<span class="kd">let</span><span class="w"> </span><span
class="n">stats</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">plan</span><span class="p">.</span><span
class="n">statistics_with_args</span><span class="p">(</span><span
class="o">&</span><span class="n">StatisticsArgs</span><span
class="p">::</span><span class="n">new</span><span class="p">())</span><span
class="o">?</span><span class="p">;</span>
+<span class="kd">let</span><span class="w"> </span><span
class="n">stats</span><span class="w"> </span><span class="o">=</span><span
class="w"> </span><span class="n">StatisticsContext</span><span
class="p">::</span><span class="n">new</span><span class="p">().</span><span
class="n">compute</span><span class="p">(</span><span
class="n">plan</span><span class="p">.</span><span class="n">as_ref</span><span
class="p">(),</span><span class="w"> </span><span class="o">&</span><span
class= [...]
</pre></div>
</div>
</section>
@@ -1001,7 +1012,7 @@ metadata and schema fingerprint match.</p>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#is-dynamic-physical-expr-is-deprecated"><code class="docutils literal
notranslate"><span class="pre">is_dynamic_physical_expr</span></code> is
deprecated</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#filepruner-try-new-no-longer-builds-a-pruner-for-static-predicates-without-statistics"><code
class="docutils literal notranslate"><span
class="pre">FilePruner::try_new</span></code> no longer builds a pruner for
static predicates without statistics</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#queryplanner-adds-any-as-a-supertrait"><code class="docutils literal
notranslate"><span class="pre">QueryPlanner</span></code> adds <code
class="docutils literal notranslate"><span class="pre">Any</span></code> as a
supertrait</a></li>
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#executionplan-partition-statistics-deprecated-in-favor-of-statistics-with-args"><code
class="docutils literal notranslate"><span
class="pre">ExecutionPlan::partition_statistics</span></code> deprecated in
favor of <code class="docutils literal notranslate"><span
class="pre">statistics_with_args</span></code></a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#executionplan-partition-statistics-deprecated-in-favor-of-statistics-from-inputs"><code
class="docutils literal notranslate"><span
class="pre">ExecutionPlan::partition_statistics</span></code> deprecated in
favor of <code class="docutils literal notranslate"><span
class="pre">statistics_from_inputs</span></code></a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#ddlstatement-createexternaltable-and-createfunction-are-now-boxed"><code
class="docutils literal notranslate"><span
class="pre">DdlStatement::CreateExternalTable</span></code> and <code
class="docutils literal notranslate"><span
class="pre">CreateFunction</span></code> are now boxed</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#listingoptions-target-partitions-and-collect-stat-removed"><code
class="docutils literal notranslate"><span
class="pre">ListingOptions::target_partitions</span></code> and <code
class="docutils literal notranslate"><span
class="pre">collect_stat</span></code> removed</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#spark-map-functions-now-reject-duplicate-keys-by-default">Spark map
functions now reject duplicate keys by default</a></li>
diff --git a/searchindex.js b/searchindex.js
index 7ea4e909c8..1d8d373f73 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[74,"op-neq"]],"!~":[[74,"op-re-not-match"]],"!~*":[[74,"op-re-not-match-i"]],"!~~":[[74,"id19"]],"!~~*":[[74,"id20"]],"#":[[74,"op-bit-xor"]],"%":[[74,"op-modulo"]],"&":[[74,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[15,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[74,"op-multiply"]],"+":[[74,"op-plus"]],"-":[[74,"op-minus"]],"/":[[74,"op-divide"]],"1.
Array Literal Con [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[74,"op-neq"]],"!~":[[74,"op-re-not-match"]],"!~*":[[74,"op-re-not-match-i"]],"!~~":[[74,"id19"]],"!~~*":[[74,"id20"]],"#":[[74,"op-bit-xor"]],"%":[[74,"op-modulo"]],"&":[[74,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[15,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[74,"op-multiply"]],"+":[[74,"op-plus"]],"-":[[74,"op-minus"]],"/":[[74,"op-divide"]],"1.
Array Literal Con [...]
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]