Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::category::WindowJoin< P, S > Struct Template Referenceexport

p >> s, SQL's JOIN on a window: the tensor of the windows of the words of p that land in s, at every offset where a window fits. A constructor, not a materialisation: the join is a tensor, counted, never enumerated, so it stays inside the counted world and never meets the bag a join yielding rows would need. More...

Collaboration diagram for dedekind::category::WindowJoin< P, S >:

Public Attributes

P power
S inner

Detailed Description

template<typename P, typename S>
requires requires(const P& p, const S& s) { occurrences(p, s); }
struct dedekind::category::WindowJoin< P, S >

p >> s, SQL's JOIN on a window: the tensor of the windows of the words of p that land in s, at every offset where a window fits. A constructor, not a materialisation: the join is a tensor, counted, never enumerated, so it stays inside the counted world and never meets the bag a join yielding rows would need.

Read three ways. As a pullback: the cylinder at offset i is the preimage of s under the window \(\pi_I : \Sigma^N \to \Sigma^n\), the pullback of \(\pi_I\) along the inclusion \(s \hookrightarrow \Sigma^n\) (:pullback); two words agreeing on the window are related by its kernel pair (IsKernelPair), the self-join of p on \(\pi_I\). As a correlation: the count slides s's indicator, the kernel of the convolution, over every offset of every word, \(\sum_w \sum_i \chi_s(\pi_{I+i}(w))\). As a query: COUNT(*) over the join, its aggregate pushed through it by R2, Yan and Larson's eager aggregation (VLDB 1995), the window's count times the free legs', and the offsets summed by translation invariance (HasUnitPeriod). So its count is occurrences(p, s), and exact_count the checked one.

Template Parameters
Pthe tensor power.
Sthe set of words.

The documentation for this struct was generated from the following file: