hamelin_translation 0.7.7

Lowering and IR for Hamelin query language
Documentation
//! Pipeline-level normalization passes.
//!
//! These passes transform a single `TypedPipeline` without generating CTEs.
//!
//! Contract: `Arc<TypedPipeline> -> Result<Arc<TypedPipeline>, Arc<TranslationError>>`
//!
//! Passes (in order):
//! - `lower_broadcast_apply` - BroadcastApply → transform(array, lambda)
//! - `normalize_within` - WITHIN → WHERE with explicit timestamp bounds
//! - `normalize_agg` - AGG compound identifiers → flat AGG + LET/DROP
//! - `normalize_window` - WINDOW compound identifiers → flat WINDOW + LET/DROP
//! - `extract_window_aggregates` - WINDOW nested aggregates → flat WINDOW + SELECT
//! - `normalize_explode` - EXPLODE compound identifiers → flat EXPLODE + LET/DROP
//! - `lower_unnest` - UNNEST → EXPLODE (if array) + LET + DROP
//! - `lower_parse` - PARSE → LET + WHERE (regex extraction + filter)
//! - `lower_nest` - NEST → SELECT with struct literal
//! - `expand_array_literals` - Expands array literal elements to match element type
//! - `desugar_in_array_literals` - Rewrites `x IN [1,2,3]` to `x IN (1,2,3)` for scalar literals
//! - `lower_ts_trunc_interval` - Rewrites `TsTrunc(interval)` → `TsTrunc(now() + interval)`
//! - `dedup_append_source` - Deduplicates source rows by DISTINCT BY keys before APPEND
//! - `align_append_schema` - Inserts SELECT before APPEND to align to target schema (main pipeline only)
//! - `fuse_projections` - Fuses LET/DROP/SELECT into minimal SELECT commands (must be last)

mod align_append_schema;
mod dedup_append_source;
mod desugar_in_array_literals;
mod desugar_map_from_arrays;
mod expand_array_literals;
mod extract_window_aggregates;
mod fuse_projections;
mod lower_broadcast_apply;
mod lower_nest;
mod lower_parse;
mod lower_transform;
mod lower_ts_trunc_interval;
mod lower_unnest;
mod normalize_agg;
mod normalize_explode;
mod normalize_window;
mod normalize_within;

pub use align_append_schema::align_append_schema;
pub use dedup_append_source::dedup_append_source;
pub use desugar_in_array_literals::desugar_in_array_literals;
pub use desugar_map_from_arrays::desugar_map_from_arrays;
pub use expand_array_literals::expand_array_literals;
pub use extract_window_aggregates::extract_window_aggregates;
pub use fuse_projections::fuse_projections;
pub use lower_broadcast_apply::lower_broadcast_apply;
pub use lower_nest::lower_nest;
pub use lower_parse::lower_parse;
pub use lower_transform::lower_transform;
pub use lower_ts_trunc_interval::lower_ts_trunc_interval;
pub use lower_unnest::lower_unnest;
pub use normalize_agg::normalize_agg;
pub use normalize_explode::normalize_explode;
pub use normalize_window::normalize_window;
pub use normalize_within::normalize_within;