From 0a6aa335f0d0c8614af97a70847bb5e9531e651c Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Oct 2026 16:38:53 +0000 Subject: [PATCH 1/2] Move expression analysis, rewrites and statistics pruning into vortex-expr Expression analysis, the rewrite transforms and statistics pruning are only used by scan planning (vortex-layout, vortex-file, vortex-spatial and one `replace` call in vortex-datafusion); nothing in vortex-array's arrays or execution calls them. They move to a new `vortex-expr` crate: - `vortex_expr::analysis` (annotations, labeling, field-access analysis, `referenced_field_paths`), also re-exported at the crate root as before - `vortex_expr::forms::conjuncts` - `vortex_expr::transform::{partition_bound, partition_bound_annotations, BoundPartitionedExpr, replace, find_between}` - `vortex_expr::stats`: the stat-expression helpers, `StatBinder`, the falsify/satisfy rewrite rules and `StatsSession`, which turn filter predicates into pruning predicates for zone maps and file stats vortex-array keeps the statistics themselves (`StatsSet`, `ArrayStats`, `Stat`, `Precision`) and the `StatFn` scalar function. `vortex_array::expr::transform` is removed; `find_between` is no longer part of `BoundExpression::optimize`. - `BoundExpression::{falsify, satisfy}` were inherent methods; they become the `BoundExpressionPruneExt` extension trait. - `LikeVariant`, which only the LIKE pruning rule uses, moves with it. - `DynamicComparisonExpr` gains `operator()`, `default()` and `with_operator()`, since the pruning rules can no longer reach its fields. - `array_session()` no longer adds `StatsSession`; `session.get` creates it with the built-in rules on first use, and `VortexSessionDefault` still adds it explicitly. - The falsification tests for `is_null`, `is_not_null` and `list_contains` move to `vortex_expr::stats::rewrite`, and the one optimizer test that used `replace` builds the replaced expression directly. The umbrella crate's `vortex::expr` module re-exports both `vortex_array::expr` and `vortex_expr`, and `vortex::expr::stats` re-exports both stats modules, so existing paths keep working. Signed-off-by: Claude Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Ps4mp7KF5c4p66aoSoXx5j --- Cargo.lock | 19 ++ Cargo.toml | 2 + .../internals/stats-pruning.md | 4 +- encodings/alp/benches/alp_compress.rs | 4 +- .../datetime-parts/benches/split_temporal.rs | 2 - .../benches/dbp_assemble.rs | 2 - .../decimal-byte-parts/benches/dbp_split.rs | 2 - .../fastlanes/benches/bitpack_blocked.rs | 4 +- .../benches/bitpack_blocked_decompress.rs | 4 +- .../fastlanes/benches/bitpack_compare.rs | 4 +- .../benches/bitpack_compare_sweep.rs | 4 +- .../fastlanes/benches/bitpacking_filter.rs | 4 +- .../fastlanes/benches/bitpacking_take.rs | 4 +- .../fastlanes/benches/canonicalize_bench.rs | 4 +- encodings/fastlanes/benches/cast_bitpacked.rs | 4 +- .../fastlanes/benches/compute_between.rs | 4 +- encodings/fastlanes/benches/for_decode.rs | 4 +- encodings/fastlanes/benches/for_encode.rs | 4 +- .../fsst/benches/chunked_dict_fsst_builder.rs | 4 +- encodings/fsst/benches/fsst_compress.rs | 4 +- encodings/fsst/benches/fsst_like.rs | 4 +- encodings/fsst/benches/fsst_take.rs | 4 +- encodings/fsst/benches/fsst_url_compare.rs | 4 +- encodings/onpair/benches/decode.rs | 4 +- encodings/pco/benches/scalar.rs | 2 - encodings/runend/benches/run_end_compress.rs | 4 +- encodings/runend/benches/run_end_decode.rs | 4 +- .../benches/run_end_decode_primitive.rs | 4 +- .../runend/benches/run_end_null_count.rs | 4 +- encodings/runend/benches/run_end_sum.rs | 4 +- encodings/runend/benches/run_end_take.rs | 4 +- encodings/sparse/benches/sparse_canonical.rs | 4 +- encodings/sparse/benches/sparse_pushdown.rs | 4 +- vortex-array/benches/aggregate_grouped.rs | 2 - vortex-array/benches/aggregate_max.rs | 2 - vortex-array/benches/aggregate_sum.rs | 2 - vortex-array/benches/binary_ops.rs | 2 - vortex-array/benches/bool_zip.rs | 2 - vortex-array/benches/cast_decimal.rs | 2 - vortex-array/benches/cast_primitive.rs | 2 - vortex-array/benches/chunk_array_builder.rs | 2 - vortex-array/benches/chunked_dict_builder.rs | 2 - .../benches/chunked_fsl_canonicalize.rs | 2 - vortex-array/benches/compare.rs | 2 - vortex-array/benches/compare_sorted.rs | 2 - vortex-array/benches/dict_compare.rs | 2 - vortex-array/benches/dict_compress.rs | 2 - vortex-array/benches/dict_mask.rs | 2 - .../benches/dict_unreferenced_mask.rs | 2 - vortex-array/benches/expr/case_when_bench.rs | 2 - vortex-array/benches/filter_bool.rs | 2 - vortex-array/benches/filter_fixed_width.rs | 2 - vortex-array/benches/filter_fsl.rs | 2 - vortex-array/benches/filter_list.rs | 2 - vortex-array/benches/interleave.rs | 2 - vortex-array/benches/kleene_bool.rs | 2 - vortex-array/benches/like.rs | 2 - vortex-array/benches/list_contains_set.rs | 2 - vortex-array/benches/list_length.rs | 2 - vortex-array/benches/list_sum.rs | 2 - .../benches/listview_builder_extend.rs | 2 - vortex-array/benches/listview_rebuild.rs | 2 - vortex-array/benches/listview_zip.rs | 2 - vortex-array/benches/patches_lookup.rs | 2 - .../piecewise_sequence_take_primitive.rs | 2 - vortex-array/benches/primitive_zip.rs | 2 - vortex-array/benches/probe.rs | 2 - vortex-array/benches/row_fn_bool_retry.rs | 2 - vortex-array/benches/row_fn_output.rs | 2 - vortex-array/benches/row_fn_utf8_input.rs | 2 - vortex-array/benches/scalar_at_struct.rs | 2 - vortex-array/benches/scalar_construction.rs | 2 - vortex-array/benches/scalar_fn_probe.rs | 2 - vortex-array/benches/scalar_subtract.rs | 2 - vortex-array/benches/take_chunked.rs | 2 - vortex-array/benches/take_filter.rs | 2 - vortex-array/benches/take_fsl.rs | 2 - vortex-array/benches/take_patches.rs | 2 - vortex-array/benches/take_primitive.rs | 2 - vortex-array/benches/take_struct.rs | 2 - vortex-array/benches/take_varbin.rs | 2 - vortex-array/benches/validity_is_valid.rs | 2 - vortex-array/benches/varbinview_compact.rs | 2 - vortex-array/benches/varbinview_fill_null.rs | 2 - vortex-array/benches/varbinview_try_new.rs | 2 - vortex-array/benches/varbinview_zip.rs | 2 - vortex-array/src/expr/bound_expression.rs | 13 -- vortex-array/src/expr/mod.rs | 4 - vortex-array/src/expr/optimize.rs | 18 +- vortex-array/src/scalar_fn/fns/dynamic.rs | 19 ++ vortex-array/src/scalar_fn/fns/is_not_null.rs | 28 --- vortex-array/src/scalar_fn/fns/is_null.rs | 22 --- vortex-array/src/scalar_fn/fns/like/mod.rs | 104 ---------- .../src/scalar_fn/fns/list_contains/mod.rs | 62 +----- vortex-array/src/stats/mod.rs | 15 -- vortex-arrow/benches/to_arrow.rs | 4 +- vortex-btrblocks/benches/compress.rs | 2 - vortex-btrblocks/benches/compress_listview.rs | 2 - vortex-compressor/benches/dict_encode.rs | 2 - vortex-compressor/benches/float_stats.rs | 2 - vortex-compressor/benches/integer_stats.rs | 2 - vortex-compressor/benches/stats_calc.rs | 2 - vortex-cuda/benches/alp_cuda.rs | 2 - vortex-cuda/benches/arrow_validity_cuda.rs | 2 - vortex-cuda/benches/bitpacked_cuda.rs | 2 - vortex-cuda/benches/delta_cuda.rs | 2 - vortex-cuda/benches/dynamic_dispatch_cuda.rs | 2 - vortex-cuda/benches/for_cuda.rs | 2 - vortex-cuda/benches/fsst_cuda.rs | 2 - vortex-expr/Cargo.toml | 30 +++ .../src}/analysis/annotation.rs | 11 +- .../src}/analysis/immediate_access.rs | 12 +- .../src}/analysis/labeling.rs | 20 +- .../expr => vortex-expr/src}/analysis/mod.rs | 0 .../src}/analysis/referenced_field_paths.rs | 41 ++-- .../src}/forms/extract_conjuncts.rs | 6 +- .../src/expr => vortex-expr/src}/forms/mod.rs | 0 vortex-expr/src/lib.rs | 18 ++ .../src/stats/bind.rs | 39 ++-- .../src/stats/expr.rs | 81 ++++---- vortex-expr/src/stats/mod.rs | 22 +++ .../src/stats/rewrite.rs | 55 ++++-- .../src/stats/rewrite/builtins.rs | 186 +++++++++--------- vortex-expr/src/stats/rewrite/fn_tests.rs | 118 +++++++++++ vortex-expr/src/stats/rewrite/like_variant.rs | 112 +++++++++++ .../src/stats/session.rs | 2 +- .../src}/transform/bound_partition.rs | 60 +++--- .../src}/transform/match_between.rs | 61 +++--- .../expr => vortex-expr/src}/transform/mod.rs | 3 +- .../src}/transform/replace.rs | 18 +- vortex-file/Cargo.toml | 1 + vortex-file/benches/split_collection.rs | 2 - vortex-file/src/pruning.rs | 5 +- vortex-layout/Cargo.toml | 1 + .../benches/aggregate_partial_merge.rs | 2 - vortex-layout/benches/pipeline_scan.rs | 2 - vortex-layout/benches/zone_map_prune.rs | 3 +- vortex-layout/src/layouts/dict/reader.rs | 6 +- vortex-layout/src/layouts/partitioned.rs | 2 +- vortex-layout/src/layouts/row_idx/mod.rs | 4 +- vortex-layout/src/layouts/struct_/reader.rs | 8 +- .../aggregates/bloom_filter/scalar_fn.rs | 9 +- vortex-layout/src/layouts/zoned/pruning.rs | 1 + vortex-layout/src/layouts/zoned/zone_map.rs | 21 +- vortex-layout/src/plan/physical/plans/pack.rs | 6 +- .../src/plan/physical/plans/row_idx.rs | 2 +- vortex-layout/src/plan/physical/plans/take.rs | 4 +- vortex-layout/src/plan/physical/tests.rs | 1 + vortex-layout/src/scan/execution/filter.rs | 3 +- vortex-layout/src/scan/scan_builder.rs | 4 +- vortex-row/benches/row_encode.rs | 2 - vortex-spatial/Cargo.toml | 1 + vortex-spatial/src/lib.rs | 2 +- vortex-spatial/src/prune/distance.rs | 5 +- vortex-spatial/src/prune/intersects.rs | 5 +- vortex-spatial/src/prune/mod.rs | 2 +- vortex-tensor/benches/cosine_similarity.rs | 2 - vortex-tensor/benches/inner_product.rs | 2 - vortex-tensor/benches/l2_norm.rs | 2 - vortex/Cargo.toml | 1 + vortex/src/lib.rs | 14 +- 161 files changed, 748 insertions(+), 830 deletions(-) create mode 100644 vortex-expr/Cargo.toml rename {vortex-array/src/expr => vortex-expr/src}/analysis/annotation.rs (94%) rename {vortex-array/src/expr => vortex-expr/src}/analysis/immediate_access.rs (90%) rename {vortex-array/src/expr => vortex-expr/src}/analysis/labeling.rs (89%) rename {vortex-array/src/expr => vortex-expr/src}/analysis/mod.rs (100%) rename {vortex-array/src/expr => vortex-expr/src}/analysis/referenced_field_paths.rs (89%) rename {vortex-array/src/expr => vortex-expr/src}/forms/extract_conjuncts.rs (87%) rename {vortex-array/src/expr => vortex-expr/src}/forms/mod.rs (100%) create mode 100644 vortex-expr/src/lib.rs rename {vortex-array => vortex-expr}/src/stats/bind.rs (90%) rename {vortex-array => vortex-expr}/src/stats/expr.rs (89%) create mode 100644 vortex-expr/src/stats/mod.rs rename {vortex-array => vortex-expr}/src/stats/rewrite.rs (83%) rename {vortex-array => vortex-expr}/src/stats/rewrite/builtins.rs (90%) create mode 100644 vortex-expr/src/stats/rewrite/fn_tests.rs create mode 100644 vortex-expr/src/stats/rewrite/like_variant.rs rename {vortex-array => vortex-expr}/src/stats/session.rs (98%) rename {vortex-array/src/expr => vortex-expr/src}/transform/bound_partition.rs (92%) rename {vortex-array/src/expr => vortex-expr/src}/transform/match_between.rs (90%) rename {vortex-array/src/expr => vortex-expr/src}/transform/mod.rs (62%) rename {vortex-array/src/expr => vortex-expr/src}/transform/replace.rs (81%) diff --git a/Cargo.lock b/Cargo.lock index 1232da7d7ef..6cba9df272b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11347,6 +11347,7 @@ dependencies = [ "vortex-decimal-byte-parts", "vortex-edition", "vortex-error", + "vortex-expr", "vortex-fastlanes", "vortex-file", "vortex-fsst", @@ -11929,6 +11930,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "vortex-expr" +version = "0.1.0" +dependencies = [ + "itertools 0.14.0", + "parking_lot", + "rstest", + "tracing", + "vortex-array", + "vortex-buffer", + "vortex-error", + "vortex-session", + "vortex-utils", +] + [[package]] name = "vortex-fastlanes" version = "0.1.0" @@ -12009,6 +12025,7 @@ dependencies = [ "vortex-decimal-byte-parts", "vortex-edition", "vortex-error", + "vortex-expr", "vortex-fastlanes", "vortex-fsst", "vortex-io", @@ -12211,6 +12228,7 @@ dependencies = [ "vortex-buffer", "vortex-edition", "vortex-error", + "vortex-expr", "vortex-file", "vortex-io", "vortex-mask", @@ -12490,6 +12508,7 @@ dependencies = [ "vortex-buffer", "vortex-edition", "vortex-error", + "vortex-expr", "vortex-layout", "vortex-mask", "vortex-session", diff --git a/Cargo.toml b/Cargo.toml index 9fe805bfa3c..f7d5a15e8a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ members = [ "vortex-io", "vortex-cloud", "vortex-array", + "vortex-expr", "vortex-arrow", "vortex-row", "vortex-tensor", @@ -319,6 +320,7 @@ vortex-datetime-parts = { version = "0.1.0", path = "./encodings/datetime-parts" vortex-decimal-byte-parts = { version = "0.1.0", path = "encodings/decimal-byte-parts", default-features = false } vortex-edition = { version = "0.1.0", path = "./vortex-edition", default-features = false } vortex-error = { version = "0.1.0", path = "./vortex-error", default-features = false } +vortex-expr = { version = "0.1.0", path = "./vortex-expr", default-features = false } vortex-fastlanes = { version = "0.1.0", path = "./encodings/fastlanes", default-features = false } vortex-file = { version = "0.1.0", path = "./vortex-file", default-features = false } vortex-fsst = { version = "0.1.0", path = "./encodings/fsst", default-features = false } diff --git a/docs/developer-guide/internals/stats-pruning.md b/docs/developer-guide/internals/stats-pruning.md index 4acaf9efc2a..1dc2dcc6415 100644 --- a/docs/developer-guide/internals/stats-pruning.md +++ b/docs/developer-guide/internals/stats-pruning.md @@ -10,8 +10,8 @@ the proof was unknown, usually because a required stat was missing or inexact. The pruning pipeline has two phases: -1. `Expression::falsify(scope, session)` asks the session's - `StatsRewriteRule`s to rewrite a filter into an abstract proof expression. +1. `BoundExpressionPruneExt::falsify(session)`, from `vortex_expr::stats::rewrite`, asks the + session's `StatsRewriteRule`s to rewrite a bound filter into an abstract proof expression. Rules describe semantics in terms of `vortex.stat(input, aggregate_fn)` placeholders. These placeholders name the statistic needed by the proof, but not where that statistic is stored. diff --git a/encodings/alp/benches/alp_compress.rs b/encodings/alp/benches/alp_compress.rs index a904762d8f2..8884fc55f68 100644 --- a/encodings/alp/benches/alp_compress.rs +++ b/encodings/alp/benches/alp_compress.rs @@ -27,7 +27,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_buffer::buffer; @@ -70,8 +69,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_alp::initialize(&session); session }); diff --git a/encodings/datetime-parts/benches/split_temporal.rs b/encodings/datetime-parts/benches/split_temporal.rs index 940c0a29a53..975466c7ec2 100644 --- a/encodings/datetime-parts/benches/split_temporal.rs +++ b/encodings/datetime-parts/benches/split_temporal.rs @@ -21,7 +21,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_datetime_parts::split_temporal; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const BENCH_ARGS: &[(usize, TimeUnit)] = &[ diff --git a/encodings/decimal-byte-parts/benches/dbp_assemble.rs b/encodings/decimal-byte-parts/benches/dbp_assemble.rs index 6bb5d8511a5..1268a14f424 100644 --- a/encodings/decimal-byte-parts/benches/dbp_assemble.rs +++ b/encodings/decimal-byte-parts/benches/dbp_assemble.rs @@ -119,7 +119,6 @@ mod arrays { use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; - use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::buffer; use vortex_decimal_byte_parts::_benchmarking::assemble_decimal; @@ -139,7 +138,6 @@ mod arrays { .with::() .with::() .with::() - .with::() }); #[divan::bench(args = cases())] diff --git a/encodings/decimal-byte-parts/benches/dbp_split.rs b/encodings/decimal-byte-parts/benches/dbp_split.rs index 84d90944e19..d3a6f565ede 100644 --- a/encodings/decimal-byte-parts/benches/dbp_split.rs +++ b/encodings/decimal-byte-parts/benches/dbp_split.rs @@ -91,7 +91,6 @@ mod arrays { use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; - use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_decimal_byte_parts::split_decimal; use vortex_error::VortexExpect; @@ -108,7 +107,6 @@ mod arrays { .with::() .with::() .with::() - .with::() }); #[divan::bench(args = cases())] diff --git a/encodings/fastlanes/benches/bitpack_blocked.rs b/encodings/fastlanes/benches/bitpack_blocked.rs index d49a3b2bb0c..e1ffda945eb 100644 --- a/encodings/fastlanes/benches/bitpack_blocked.rs +++ b/encodings/fastlanes/benches/bitpack_blocked.rs @@ -18,7 +18,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_fastlanes::bitpack_compress::bitpack_encode_blocked; use vortex_session::VortexSession; @@ -37,8 +36,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpack_blocked_decompress.rs b/encodings/fastlanes/benches/bitpack_blocked_decompress.rs index 93fa07b90c8..c793639f3b9 100644 --- a/encodings/fastlanes/benches/bitpack_blocked_decompress.rs +++ b/encodings/fastlanes/benches/bitpack_blocked_decompress.rs @@ -20,7 +20,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_fastlanes::BitPackedArraySlotsExt; use vortex_fastlanes::bitpack_compress::bitpack_encode_blocked; use vortex_fastlanes::bitpack_decompress::unpack_array_blocked; @@ -41,8 +40,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpack_compare.rs b/encodings/fastlanes/benches/bitpack_compare.rs index 64380422692..02da528fdac 100644 --- a/encodings/fastlanes/benches/bitpack_compare.rs +++ b/encodings/fastlanes/benches/bitpack_compare.rs @@ -30,7 +30,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Alignment; use vortex_buffer::BufferMut; @@ -55,8 +54,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpack_compare_sweep.rs b/encodings/fastlanes/benches/bitpack_compare_sweep.rs index 602d20b7648..1996243700e 100644 --- a/encodings/fastlanes/benches/bitpack_compare_sweep.rs +++ b/encodings/fastlanes/benches/bitpack_compare_sweep.rs @@ -34,7 +34,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Alignment; use vortex_buffer::BufferMut; @@ -59,8 +58,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpacking_filter.rs b/encodings/fastlanes/benches/bitpacking_filter.rs index 15f418b197c..13d29903e5b 100644 --- a/encodings/fastlanes/benches/bitpacking_filter.rs +++ b/encodings/fastlanes/benches/bitpacking_filter.rs @@ -20,7 +20,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_fastlanes::BitPackedData; @@ -39,8 +38,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpacking_take.rs b/encodings/fastlanes/benches/bitpacking_take.rs index 5ac7efe8ff0..eb987928f10 100644 --- a/encodings/fastlanes/benches/bitpacking_take.rs +++ b/encodings/fastlanes/benches/bitpacking_take.rs @@ -30,7 +30,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_buffer::BufferMut; @@ -55,8 +54,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/canonicalize_bench.rs b/encodings/fastlanes/benches/canonicalize_bench.rs index b8d4bd1fb81..0b9edc49b32 100644 --- a/encodings/fastlanes/benches/canonicalize_bench.rs +++ b/encodings/fastlanes/benches/canonicalize_bench.rs @@ -19,7 +19,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_fastlanes::bitpack_compress::test_harness::make_array; use vortex_session::VortexSession; @@ -53,8 +52,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/cast_bitpacked.rs b/encodings/fastlanes/benches/cast_bitpacked.rs index 2f025e2484c..dbfda7eda5b 100644 --- a/encodings/fastlanes/benches/cast_bitpacked.rs +++ b/encodings/fastlanes/benches/cast_bitpacked.rs @@ -34,7 +34,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_error::VortexExpect; @@ -57,8 +56,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/compute_between.rs b/encodings/fastlanes/benches/compute_between.rs index 5ba31181757..792562fb46e 100644 --- a/encodings/fastlanes/benches/compute_between.rs +++ b/encodings/fastlanes/benches/compute_between.rs @@ -23,7 +23,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_fastlanes::bitpack_compress::bitpack_to_best_bit_width; use vortex_session::VortexSession; @@ -43,8 +42,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/for_decode.rs b/encodings/fastlanes/benches/for_decode.rs index 0bf4bcae9aa..cdd032c6ae4 100644 --- a/encodings/fastlanes/benches/for_decode.rs +++ b/encodings/fastlanes/benches/for_decode.rs @@ -31,7 +31,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_error::vortex_panic; @@ -58,8 +57,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/for_encode.rs b/encodings/fastlanes/benches/for_encode.rs index 7b015794cf8..66f103c115e 100644 --- a/encodings/fastlanes/benches/for_encode.rs +++ b/encodings/fastlanes/benches/for_encode.rs @@ -26,7 +26,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_fastlanes::FoR; @@ -47,8 +46,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fsst/benches/chunked_dict_fsst_builder.rs b/encodings/fsst/benches/chunked_dict_fsst_builder.rs index 3a1ee27e13e..cdb5535f6cb 100644 --- a/encodings/fsst/benches/chunked_dict_fsst_builder.rs +++ b/encodings/fsst/benches/chunked_dict_fsst_builder.rs @@ -18,7 +18,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_fsst::test_utils::gen_dict_fsst_test_data; use vortex_session::VortexSession; @@ -48,8 +47,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fsst::initialize(&session); session }); diff --git a/encodings/fsst/benches/fsst_compress.rs b/encodings/fsst/benches/fsst_compress.rs index 398db9f1d04..0a78a416c1c 100644 --- a/encodings/fsst/benches/fsst_compress.rs +++ b/encodings/fsst/benches/fsst_compress.rs @@ -31,7 +31,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; use vortex_session::VortexSession; @@ -51,8 +50,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fsst::initialize(&session); session }); diff --git a/encodings/fsst/benches/fsst_like.rs b/encodings/fsst/benches/fsst_like.rs index 123121c9d48..ecc6785f49b 100644 --- a/encodings/fsst/benches/fsst_like.rs +++ b/encodings/fsst/benches/fsst_like.rs @@ -20,7 +20,6 @@ use vortex_array::scalar_fn::fns::like::Like; use vortex_array::scalar_fn::fns::like::LikeOptions; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_fsst::FSSTArray; use vortex_fsst::test_utils::NUM_STRINGS; use vortex_fsst::test_utils::make_fsst_clickbench_urls; @@ -47,8 +46,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fsst::initialize(&session); session }); diff --git a/encodings/fsst/benches/fsst_take.rs b/encodings/fsst/benches/fsst_take.rs index 10c29cf00fb..e384c3b9ba4 100644 --- a/encodings/fsst/benches/fsst_take.rs +++ b/encodings/fsst/benches/fsst_take.rs @@ -26,7 +26,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_fsst::FSSTArray; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; @@ -47,8 +46,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fsst::initialize(&session); session }); diff --git a/encodings/fsst/benches/fsst_url_compare.rs b/encodings/fsst/benches/fsst_url_compare.rs index 75354526122..98bb0d16911 100644 --- a/encodings/fsst/benches/fsst_url_compare.rs +++ b/encodings/fsst/benches/fsst_url_compare.rs @@ -27,7 +27,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; use vortex_fsst::test_utils::HIGH_MATCH_DOMAIN; @@ -51,8 +50,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fsst::initialize(&session); session }); diff --git a/encodings/onpair/benches/decode.rs b/encodings/onpair/benches/decode.rs index fa19a3af50e..cc8f2951e03 100644 --- a/encodings/onpair/benches/decode.rs +++ b/encodings/onpair/benches/decode.rs @@ -86,7 +86,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_onpair::onpair_compress; static SESSION: LazyLock = LazyLock::new(|| { @@ -96,8 +95,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_onpair::initialize(&session); session }); diff --git a/encodings/pco/benches/scalar.rs b/encodings/pco/benches/scalar.rs index 6c70643e745..d5694614ae9 100644 --- a/encodings/pco/benches/scalar.rs +++ b/encodings/pco/benches/scalar.rs @@ -19,7 +19,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_error::VortexExpect; use vortex_pco::Pco; @@ -49,7 +48,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn pco(nullable: bool) -> ArrayRef { diff --git a/encodings/runend/benches/run_end_compress.rs b/encodings/runend/benches/run_end_compress.rs index a6e318ccc08..c6a0e2decf9 100644 --- a/encodings/runend/benches/run_end_compress.rs +++ b/encodings/runend/benches/run_end_compress.rs @@ -20,7 +20,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_runend::RunEnd; @@ -45,8 +44,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_decode.rs b/encodings/runend/benches/run_end_decode.rs index 1d1046d6528..94bcc189fa1 100644 --- a/encodings/runend/benches/run_end_decode.rs +++ b/encodings/runend/benches/run_end_decode.rs @@ -17,7 +17,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::BufferMut; @@ -39,8 +38,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_decode_primitive.rs b/encodings/runend/benches/run_end_decode_primitive.rs index ff977bc305f..b48b1aec042 100644 --- a/encodings/runend/benches/run_end_decode_primitive.rs +++ b/encodings/runend/benches/run_end_decode_primitive.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -44,8 +43,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_null_count.rs b/encodings/runend/benches/run_end_null_count.rs index 2c31e5e0780..937bf9ebdfc 100644 --- a/encodings/runend/benches/run_end_null_count.rs +++ b/encodings/runend/benches/run_end_null_count.rs @@ -19,7 +19,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_runend::RunEnd; use vortex_runend::RunEndArray; @@ -68,8 +67,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_sum.rs b/encodings/runend/benches/run_end_sum.rs index be600a3e08b..9ac577f6cf4 100644 --- a/encodings/runend/benches/run_end_sum.rs +++ b/encodings/runend/benches/run_end_sum.rs @@ -18,7 +18,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_runend::RunEnd; use vortex_session::VortexSession; @@ -32,8 +31,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_take.rs b/encodings/runend/benches/run_end_take.rs index 0b451b0f034..41b193fdd85 100644 --- a/encodings/runend/benches/run_end_take.rs +++ b/encodings/runend/benches/run_end_take.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_runend::RunEnd; @@ -43,8 +42,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/sparse/benches/sparse_canonical.rs b/encodings/sparse/benches/sparse_canonical.rs index ee7225b19fa..b902a39b579 100644 --- a/encodings/sparse/benches/sparse_canonical.rs +++ b/encodings/sparse/benches/sparse_canonical.rs @@ -24,7 +24,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_error::VortexExpect; @@ -46,8 +45,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_sparse::initialize(&session); session }); diff --git a/encodings/sparse/benches/sparse_pushdown.rs b/encodings/sparse/benches/sparse_pushdown.rs index 9045feb5ea1..4da32abe91b 100644 --- a/encodings/sparse/benches/sparse_pushdown.rs +++ b/encodings/sparse/benches/sparse_pushdown.rs @@ -39,7 +39,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -63,8 +62,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_sparse::initialize(&session); session }); diff --git a/vortex-array/benches/aggregate_grouped.rs b/vortex-array/benches/aggregate_grouped.rs index 5515426cfcc..1cee8b15682 100644 --- a/vortex-array/benches/aggregate_grouped.rs +++ b/vortex-array/benches/aggregate_grouped.rs @@ -32,7 +32,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -53,7 +52,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const GROUP_COUNT: usize = 128; diff --git a/vortex-array/benches/aggregate_max.rs b/vortex-array/benches/aggregate_max.rs index 2f27798b77d..d25276a77f0 100644 --- a/vortex-array/benches/aggregate_max.rs +++ b/vortex-array/benches/aggregate_max.rs @@ -20,7 +20,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -42,7 +41,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench] diff --git a/vortex-array/benches/aggregate_sum.rs b/vortex-array/benches/aggregate_sum.rs index 8d2329412db..91f159ee664 100644 --- a/vortex-array/benches/aggregate_sum.rs +++ b/vortex-array/benches/aggregate_sum.rs @@ -17,7 +17,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -39,7 +38,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench] diff --git a/vortex-array/benches/binary_ops.rs b/vortex-array/benches/binary_ops.rs index cddd5a730e7..29b373485c7 100644 --- a/vortex-array/benches/binary_ops.rs +++ b/vortex-array/benches/binary_ops.rs @@ -41,7 +41,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -60,7 +59,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Sized to keep CodSpeed simulation under 1ms per benchmark. diff --git a/vortex-array/benches/bool_zip.rs b/vortex-array/benches/bool_zip.rs index 0bdc125defc..c2696cd09d7 100644 --- a/vortex-array/benches/bool_zip.rs +++ b/vortex-array/benches/bool_zip.rs @@ -19,7 +19,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -39,7 +38,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const LEN: usize = 65_536; diff --git a/vortex-array/benches/cast_decimal.rs b/vortex-array/benches/cast_decimal.rs index 587bf6d6901..25b62d4a037 100644 --- a/vortex-array/benches/cast_decimal.rs +++ b/vortex-array/benches/cast_decimal.rs @@ -31,7 +31,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_session::VortexSession; @@ -59,7 +58,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Builds an `i64`-backed `Decimal(precision, scale)` array of `n` values that all fit in diff --git a/vortex-array/benches/cast_primitive.rs b/vortex-array/benches/cast_primitive.rs index 2d59c03986b..7e0ad4b41d5 100644 --- a/vortex-array/benches/cast_primitive.rs +++ b/vortex-array/benches/cast_primitive.rs @@ -24,7 +24,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -48,7 +47,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench(args = SIZES)] diff --git a/vortex-array/benches/chunk_array_builder.rs b/vortex-array/benches/chunk_array_builder.rs index 4ea4a721d1c..aa2517cc5ed 100644 --- a/vortex-array/benches/chunk_array_builder.rs +++ b/vortex-array/benches/chunk_array_builder.rs @@ -26,7 +26,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -54,7 +53,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench(args = BENCH_ARGS)] diff --git a/vortex-array/benches/chunked_dict_builder.rs b/vortex-array/benches/chunked_dict_builder.rs index 65e50e6730d..95dcddc1cf7 100644 --- a/vortex-array/benches/chunked_dict_builder.rs +++ b/vortex-array/benches/chunked_dict_builder.rs @@ -18,7 +18,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -38,7 +37,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Chunk counts sized to keep CodSpeed simulation under 1ms per benchmark. diff --git a/vortex-array/benches/chunked_fsl_canonicalize.rs b/vortex-array/benches/chunked_fsl_canonicalize.rs index 544154edc41..f6a4ec6ce31 100644 --- a/vortex-array/benches/chunked_fsl_canonicalize.rs +++ b/vortex-array/benches/chunked_fsl_canonicalize.rs @@ -25,7 +25,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -46,7 +45,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Number of lists in each chunk. diff --git a/vortex-array/benches/compare.rs b/vortex-array/benches/compare.rs index 71131602d69..d67cd262980 100644 --- a/vortex-array/benches/compare.rs +++ b/vortex-array/benches/compare.rs @@ -51,7 +51,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -64,7 +63,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/compare_sorted.rs b/vortex-array/benches/compare_sorted.rs index bd04ca99aad..74d5f009dd2 100644 --- a/vortex-array/benches/compare_sorted.rs +++ b/vortex-array/benches/compare_sorted.rs @@ -33,7 +33,6 @@ use vortex_array::scalar::ScalarValue; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -45,7 +44,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/dict_compare.rs b/vortex-array/benches/dict_compare.rs index fe5336e4b57..36a4903fd68 100644 --- a/vortex-array/benches/dict_compare.rs +++ b/vortex-array/benches/dict_compare.rs @@ -28,7 +28,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -47,7 +46,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const LENGTH_AND_UNIQUE_VALUES: &[(usize, usize)] = &[ diff --git a/vortex-array/benches/dict_compress.rs b/vortex-array/benches/dict_compress.rs index a590df8bf17..53bedf8b2dc 100644 --- a/vortex-array/benches/dict_compress.rs +++ b/vortex-array/benches/dict_compress.rs @@ -24,7 +24,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -58,7 +57,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench(types = [u8, f32, i64], args = BENCH_ARGS)] diff --git a/vortex-array/benches/dict_mask.rs b/vortex-array/benches/dict_mask.rs index 26fcaa771a0..a3ae67d4475 100644 --- a/vortex-array/benches/dict_mask.rs +++ b/vortex-array/benches/dict_mask.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -34,7 +33,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/dict_unreferenced_mask.rs b/vortex-array/benches/dict_unreferenced_mask.rs index 62d20ff5284..9b81367c27d 100644 --- a/vortex-array/benches/dict_unreferenced_mask.rs +++ b/vortex-array/benches/dict_unreferenced_mask.rs @@ -21,7 +21,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { @@ -32,7 +31,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/expr/case_when_bench.rs b/vortex-array/benches/expr/case_when_bench.rs index 50335f87904..677891ac61b 100644 --- a/vortex-array/benches/expr/case_when_bench.rs +++ b/vortex-array/benches/expr/case_when_bench.rs @@ -40,7 +40,6 @@ use vortex_array::scalar_fn::fns::case_when::CaseWhenOptions; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -56,7 +55,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn main() { diff --git a/vortex-array/benches/filter_bool.rs b/vortex-array/benches/filter_bool.rs index e3314d8b868..e39b2225fd6 100644 --- a/vortex-array/benches/filter_bool.rs +++ b/vortex-array/benches/filter_bool.rs @@ -26,7 +26,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::BitBuffer; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -47,7 +46,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const SIZES: &[usize] = &[1_000, 10_000, 100_000, 250_000]; diff --git a/vortex-array/benches/filter_fixed_width.rs b/vortex-array/benches/filter_fixed_width.rs index d92b3e3c52e..c34e4a7ea2f 100644 --- a/vortex-array/benches/filter_fixed_width.rs +++ b/vortex-array/benches/filter_fixed_width.rs @@ -30,7 +30,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::BitBuffer; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -51,7 +50,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Bytes of values per input array. diff --git a/vortex-array/benches/filter_fsl.rs b/vortex-array/benches/filter_fsl.rs index 4b15c9c066b..01fb0f8ef68 100644 --- a/vortex-array/benches/filter_fsl.rs +++ b/vortex-array/benches/filter_fsl.rs @@ -24,7 +24,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_mask::Mask; @@ -46,7 +45,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const NUM_ELEMENTS: usize = 1 << 17; diff --git a/vortex-array/benches/filter_list.rs b/vortex-array/benches/filter_list.rs index a09dd08cf53..1e980d5a4c9 100644 --- a/vortex-array/benches/filter_list.rs +++ b/vortex-array/benches/filter_list.rs @@ -21,7 +21,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_mask::Mask; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const LIST_LENGTH: usize = 512; diff --git a/vortex-array/benches/interleave.rs b/vortex-array/benches/interleave.rs index 4c79d28400a..5c8ed7c5170 100644 --- a/vortex-array/benches/interleave.rs +++ b/vortex-array/benches/interleave.rs @@ -36,7 +36,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -48,7 +47,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/kleene_bool.rs b/vortex-array/benches/kleene_bool.rs index 50916be1f9a..8ace022b41b 100644 --- a/vortex-array/benches/kleene_bool.rs +++ b/vortex-array/benches/kleene_bool.rs @@ -25,7 +25,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -42,7 +41,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/like.rs b/vortex-array/benches/like.rs index 1384c66986c..63cfc29617d 100644 --- a/vortex-array/benches/like.rs +++ b/vortex-array/benches/like.rs @@ -25,7 +25,6 @@ use vortex_array::scalar_fn::fns::like::Like; use vortex_array::scalar_fn::fns::like::LikeOptions; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { @@ -36,7 +35,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/list_contains_set.rs b/vortex-array/benches/list_contains_set.rs index 072678ec57d..fb4b6781330 100644 --- a/vortex-array/benches/list_contains_set.rs +++ b/vortex-array/benches/list_contains_set.rs @@ -38,7 +38,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { @@ -49,7 +48,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/list_length.rs b/vortex-array/benches/list_length.rs index a29a13a8cf4..a9ada2d4ad3 100644 --- a/vortex-array/benches/list_length.rs +++ b/vortex-array/benches/list_length.rs @@ -33,7 +33,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -54,7 +53,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const BASE_LIST_SIZE: usize = 8; diff --git a/vortex-array/benches/list_sum.rs b/vortex-array/benches/list_sum.rs index ef537e4617a..65a0c1ab4a1 100644 --- a/vortex-array/benches/list_sum.rs +++ b/vortex-array/benches/list_sum.rs @@ -32,7 +32,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -53,7 +52,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const BASE_LIST_SIZE: usize = 8; diff --git a/vortex-array/benches/listview_builder_extend.rs b/vortex-array/benches/listview_builder_extend.rs index d5c9047d711..17b3819b97f 100644 --- a/vortex-array/benches/listview_builder_extend.rs +++ b/vortex-array/benches/listview_builder_extend.rs @@ -25,7 +25,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -38,7 +37,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/listview_rebuild.rs b/vortex-array/benches/listview_rebuild.rs index 89b451692f6..4c8131eb1d4 100644 --- a/vortex-array/benches/listview_rebuild.rs +++ b/vortex-array/benches/listview_rebuild.rs @@ -28,7 +28,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -50,7 +49,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn make_primitive_lv(num_lists: usize, list_size: usize, step: usize) -> ListViewArray { diff --git a/vortex-array/benches/listview_zip.rs b/vortex-array/benches/listview_zip.rs index b51356005aa..d5363263002 100644 --- a/vortex-array/benches/listview_zip.rs +++ b/vortex-array/benches/listview_zip.rs @@ -20,7 +20,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_mask::Mask; @@ -42,7 +41,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Smaller than the value-path benches: listview zip cost is dominated by element concatenation and diff --git a/vortex-array/benches/patches_lookup.rs b/vortex-array/benches/patches_lookup.rs index b8840d712cc..6244b94e053 100644 --- a/vortex-array/benches/patches_lookup.rs +++ b/vortex-array/benches/patches_lookup.rs @@ -21,7 +21,6 @@ use vortex_array::patches::PATCH_CHUNK_SIZE; use vortex_array::patches::Patches; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -36,7 +35,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn main() { diff --git a/vortex-array/benches/piecewise_sequence_take_primitive.rs b/vortex-array/benches/piecewise_sequence_take_primitive.rs index 825f296fa6c..8a48c3b320d 100644 --- a/vortex-array/benches/piecewise_sequence_take_primitive.rs +++ b/vortex-array/benches/piecewise_sequence_take_primitive.rs @@ -29,7 +29,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -48,7 +47,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const SOURCE_LEN: usize = 512 * 1024; diff --git a/vortex-array/benches/primitive_zip.rs b/vortex-array/benches/primitive_zip.rs index 070ed660ac5..d4b9758b270 100644 --- a/vortex-array/benches/primitive_zip.rs +++ b/vortex-array/benches/primitive_zip.rs @@ -23,7 +23,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_mask::Mask; @@ -45,7 +44,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Sized so the bench stays well under a few hundred microseconds under CodSpeed's instruction-count diff --git a/vortex-array/benches/probe.rs b/vortex-array/benches/probe.rs index 7a05001284e..f6783990ea6 100644 --- a/vortex-array/benches/probe.rs +++ b/vortex-array/benches/probe.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_error::VortexExpect; @@ -49,7 +48,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn nullable_primitive(len: usize) -> ArrayRef { diff --git a/vortex-array/benches/row_fn_bool_retry.rs b/vortex-array/benches/row_fn_bool_retry.rs index 86c7a9b8c73..e4894b8737a 100644 --- a/vortex-array/benches/row_fn_bool_retry.rs +++ b/vortex-array/benches/row_fn_bool_retry.rs @@ -30,7 +30,6 @@ use vortex_array::scalar_fn::unstable::row::RowFn; use vortex_array::scalar_fn::unstable::row::RowVisitor; use vortex_array::scalar_fn::unstable::row::execute_rows; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_error::VortexExpect; use vortex_error::VortexResult; @@ -49,7 +48,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const SIZES: &[usize] = &[16_384]; diff --git a/vortex-array/benches/row_fn_output.rs b/vortex-array/benches/row_fn_output.rs index c2a7dbf47e7..583d1627f03 100644 --- a/vortex-array/benches/row_fn_output.rs +++ b/vortex-array/benches/row_fn_output.rs @@ -31,7 +31,6 @@ use vortex_array::scalar_fn::unstable::row::RowFn; use vortex_array::scalar_fn::unstable::row::RowVisitor; use vortex_array::scalar_fn::unstable::row::execute_rows; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; @@ -54,7 +53,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const ROWS: usize = 1 << 14; diff --git a/vortex-array/benches/row_fn_utf8_input.rs b/vortex-array/benches/row_fn_utf8_input.rs index f1c1a876353..ebc493db1e9 100644 --- a/vortex-array/benches/row_fn_utf8_input.rs +++ b/vortex-array/benches/row_fn_utf8_input.rs @@ -31,7 +31,6 @@ use vortex_array::scalar_fn::unstable::row::RowVisitor; use vortex_array::scalar_fn::unstable::row::Utf8Column; use vortex_array::scalar_fn::unstable::row::execute_rows; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_session::VortexSession; @@ -53,7 +52,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const ROWS: usize = 1 << 14; diff --git a/vortex-array/benches/scalar_at_struct.rs b/vortex-array/benches/scalar_at_struct.rs index 662c571ea1a..6d37d7c0b40 100644 --- a/vortex-array/benches/scalar_at_struct.rs +++ b/vortex-array/benches/scalar_at_struct.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -47,7 +46,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench] diff --git a/vortex-array/benches/scalar_construction.rs b/vortex-array/benches/scalar_construction.rs index 0f8e2a0b521..82b21cf652c 100644 --- a/vortex-array/benches/scalar_construction.rs +++ b/vortex-array/benches/scalar_construction.rs @@ -37,7 +37,6 @@ use vortex_array::scalar::ScalarValue; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::stats::StatsSet; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_buffer::BufferString; use vortex_session::VortexSession; @@ -57,7 +56,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn main() { diff --git a/vortex-array/benches/scalar_fn_probe.rs b/vortex-array/benches/scalar_fn_probe.rs index 9a6e906b6d9..98403e03dfe 100644 --- a/vortex-array/benches/scalar_fn_probe.rs +++ b/vortex-array/benches/scalar_fn_probe.rs @@ -26,7 +26,6 @@ use vortex_array::scalar_fn::fns::binary::Binary; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -48,7 +47,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// evaluating ADD's validity is cheaper than evaluating ADD diff --git a/vortex-array/benches/scalar_subtract.rs b/vortex-array/benches/scalar_subtract.rs index 64ab36158e5..6b75a00c582 100644 --- a/vortex-array/benches/scalar_subtract.rs +++ b/vortex-array/benches/scalar_subtract.rs @@ -25,7 +25,6 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -45,7 +44,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[vortex_bench_support::cpu_features] diff --git a/vortex-array/benches/take_chunked.rs b/vortex-array/benches/take_chunked.rs index 768308e49b7..c8fce6c678a 100644 --- a/vortex-array/benches/take_chunked.rs +++ b/vortex-array/benches/take_chunked.rs @@ -28,7 +28,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -41,7 +40,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[global_allocator] diff --git a/vortex-array/benches/take_filter.rs b/vortex-array/benches/take_filter.rs index ebd0d244639..3a032165a68 100644 --- a/vortex-array/benches/take_filter.rs +++ b/vortex-array/benches/take_filter.rs @@ -37,7 +37,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::BitBufferMut; @@ -77,7 +76,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn primitive_array() -> ArrayRef { diff --git a/vortex-array/benches/take_fsl.rs b/vortex-array/benches/take_fsl.rs index 0946e554e34..24d0ab12d53 100644 --- a/vortex-array/benches/take_fsl.rs +++ b/vortex-array/benches/take_fsl.rs @@ -31,7 +31,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -52,7 +51,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Number of lists in the source array. diff --git a/vortex-array/benches/take_patches.rs b/vortex-array/benches/take_patches.rs index 1be8a4b713d..920761a4b15 100644 --- a/vortex-array/benches/take_patches.rs +++ b/vortex-array/benches/take_patches.rs @@ -22,7 +22,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::patches::Patches; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Sized to keep CodSpeed simulation under 1ms per benchmark. diff --git a/vortex-array/benches/take_primitive.rs b/vortex-array/benches/take_primitive.rs index 6c962e762b2..6e81e37040c 100644 --- a/vortex-array/benches/take_primitive.rs +++ b/vortex-array/benches/take_primitive.rs @@ -25,7 +25,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -54,7 +53,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench(sample_count = 200)] diff --git a/vortex-array/benches/take_struct.rs b/vortex-array/benches/take_struct.rs index 5d47f6a957f..7390733a8e8 100644 --- a/vortex-array/benches/take_struct.rs +++ b/vortex-array/benches/take_struct.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const ARRAY_SIZE: usize = 100_000; diff --git a/vortex-array/benches/take_varbin.rs b/vortex-array/benches/take_varbin.rs index 422e32f5d25..677b4e82564 100644 --- a/vortex-array/benches/take_varbin.rs +++ b/vortex-array/benches/take_varbin.rs @@ -22,7 +22,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -42,7 +41,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const ARRAY_SIZE: usize = 20_000; diff --git a/vortex-array/benches/validity_is_valid.rs b/vortex-array/benches/validity_is_valid.rs index 76de81fc4ae..f278b443113 100644 --- a/vortex-array/benches/validity_is_valid.rs +++ b/vortex-array/benches/validity_is_valid.rs @@ -25,7 +25,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_session::VortexSession; @@ -55,7 +54,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Per-element validity check over array-backed validity (the antipattern). This mirrors the diff --git a/vortex-array/benches/varbinview_compact.rs b/vortex-array/benches/varbinview_compact.rs index 332c74a1d7a..62ba38fb589 100644 --- a/vortex-array/benches/varbinview_compact.rs +++ b/vortex-array/benches/varbinview_compact.rs @@ -21,7 +21,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Buffer; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -52,7 +51,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); #[divan::bench(args = ARGS)] diff --git a/vortex-array/benches/varbinview_fill_null.rs b/vortex-array/benches/varbinview_fill_null.rs index 8d46df382e8..b8601c2be0c 100644 --- a/vortex-array/benches/varbinview_fill_null.rs +++ b/vortex-array/benches/varbinview_fill_null.rs @@ -22,7 +22,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_session::VortexSession; #[global_allocator] @@ -41,7 +40,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Sized to keep CodSpeed simulation under 1ms per benchmark. diff --git a/vortex-array/benches/varbinview_try_new.rs b/vortex-array/benches/varbinview_try_new.rs index 813c52806cd..42b0e5bc811 100644 --- a/vortex-array/benches/varbinview_try_new.rs +++ b/vortex-array/benches/varbinview_try_new.rs @@ -17,7 +17,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn garbage_view() -> BinaryView { diff --git a/vortex-array/benches/varbinview_zip.rs b/vortex-array/benches/varbinview_zip.rs index 1a7bc592e88..93136c0cfea 100644 --- a/vortex-array/benches/varbinview_zip.rs +++ b/vortex-array/benches/varbinview_zip.rs @@ -20,7 +20,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -40,7 +39,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Benchmarks zip on VarBinView arrays with a highly fragmented mask (worst case for per-slice lookup paths). diff --git a/vortex-array/src/expr/bound_expression.rs b/vortex-array/src/expr/bound_expression.rs index 8c3ebb8eec0..035ca91f404 100644 --- a/vortex-array/src/expr/bound_expression.rs +++ b/vortex-array/src/expr/bound_expression.rs @@ -12,7 +12,6 @@ use itertools::Itertools; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; -use vortex_session::VortexSession; use crate::dtype::DType; use crate::expr::Expression; @@ -29,8 +28,6 @@ use crate::scalar_fn::ScalarFnRef; use crate::scalar_fn::ScalarFnVTable; use crate::scalar_fn::ScalarFnVTableExt; use crate::scalar_fn::fns::is_not_null::IsNotNull; -use crate::stats::rewrite::falsify; -use crate::stats::rewrite::satisfy; /// An [`Expression`] that has been type-checked against a [`Scope`]. /// @@ -272,16 +269,6 @@ impl BoundExpression { } } - /// Return an expression that proves this predicate is definitely false from statistics. - pub fn falsify(&self, session: &VortexSession) -> VortexResult> { - falsify(self, session) - } - - /// Return an expression that proves this predicate is definitely true from statistics. - pub fn satisfy(&self, session: &VortexSession) -> VortexResult> { - satisfy(self, session) - } - /// Display the bound expression as a formatted tree structure. pub fn display_tree(&self) -> impl Display { DisplayTreeExpr(self) diff --git a/vortex-array/src/expr/mod.rs b/vortex-array/src/expr/mod.rs index 230dae1f25d..bbdbbfdf01a 100644 --- a/vortex-array/src/expr/mod.rs +++ b/vortex-array/src/expr/mod.rs @@ -40,7 +40,6 @@ //! [Apache Datafusion]: https://github.com/apache/datafusion/tree/5fac581efbaffd0e6a9edf931182517524526afd/datafusion/expr pub mod aliases; -pub mod analysis; #[cfg(feature = "arbitrary")] pub mod arbitrary; pub mod bound_expression; @@ -48,16 +47,13 @@ pub mod display; pub(crate) mod expression; mod exprs; pub(crate) mod field; -pub mod forms; pub mod lambda; mod optimize; pub mod proto; pub mod scope; pub mod stats; -pub mod transform; pub mod traversal; -pub use analysis::*; pub use bound_expression::*; pub use expression::*; pub use exprs::and; diff --git a/vortex-array/src/expr/optimize.rs b/vortex-array/src/expr/optimize.rs index fdb6e0cbcfc..ac4356892b6 100644 --- a/vortex-array/src/expr/optimize.rs +++ b/vortex-array/src/expr/optimize.rs @@ -152,7 +152,6 @@ mod tests { use crate::expr::pack; use crate::expr::root; use crate::expr::select; - use crate::expr::transform::replace; use crate::expr::zip_expr; use crate::scalar::Scalar; use crate::scalar_fn::fns::literal::Literal; @@ -257,6 +256,13 @@ mod tests { ); let scope = DType::Struct(fields, Nullability::NonNullable); + let root_pack = pack( + field_names + .iter() + .map(|name| (name.clone(), get_item(name.clone(), root()))) + .collect::>(), + Nullability::NonNullable, + ); let expr = select( field_names .iter() @@ -264,7 +270,7 @@ mod tests { .chain(["input_row_idx".into(), "input_file_idx".into()]) .collect::>(), merge([ - root(), + root_pack, pack( [ ("input_row_idx", lit(0_u64)), @@ -274,14 +280,6 @@ mod tests { ), ]), ); - let root_pack = pack( - field_names - .iter() - .map(|name| (name.clone(), get_item(name.clone(), root()))) - .collect::>(), - Nullability::NonNullable, - ); - let expr = replace(expr, &root(), root_pack); let expected = pack( field_names diff --git a/vortex-array/src/scalar_fn/fns/dynamic.rs b/vortex-array/src/scalar_fn/fns/dynamic.rs index 3570c06180f..7ce5a17dd3b 100644 --- a/vortex-array/src/scalar_fn/fns/dynamic.rs +++ b/vortex-array/src/scalar_fn/fns/dynamic.rs @@ -140,6 +140,25 @@ pub struct DynamicComparisonExpr { } impl DynamicComparisonExpr { + /// The comparison applied between the input and the dynamic value. + pub fn operator(&self) -> CompareOperator { + self.operator + } + + /// The result used while the dynamic value is not yet known. + pub fn default(&self) -> bool { + self.default + } + + /// A comparison against the same dynamic value with a different operator and default. + pub fn with_operator(&self, operator: CompareOperator, default: bool) -> Self { + Self { + operator, + rhs: Arc::clone(&self.rhs), + default, + } + } + pub fn scalar(&self) -> Option { (self.rhs.value)().map(|v| { Scalar::try_new(self.rhs.dtype.clone(), Some(v)) diff --git a/vortex-array/src/scalar_fn/fns/is_not_null.rs b/vortex-array/src/scalar_fn/fns/is_not_null.rs index 094510c8e41..253aaa01dcd 100644 --- a/vortex-array/src/scalar_fn/fns/is_not_null.rs +++ b/vortex-array/src/scalar_fn/fns/is_not_null.rs @@ -204,7 +204,6 @@ mod tests { use crate::expr::Expression; use crate::expr::and; use crate::expr::col; - use crate::expr::eq; use crate::expr::get_item; use crate::expr::is_not_null; use crate::expr::is_null; @@ -214,18 +213,9 @@ mod tests { use crate::expr::root; use crate::expr::test_harness; use crate::scalar::Scalar; - use crate::scalar_fn::EmptyOptions; - use crate::scalar_fn::ScalarFnVTableExt; - use crate::scalar_fn::internal::row_count::RowCount; - use crate::stats::StatsSession; - use crate::stats::all_null; - use crate::stats::null_count; static SESSION: LazyLock = LazyLock::new(VortexSession::empty); - static STATS_SESSION: LazyLock = - LazyLock::new(|| VortexSession::empty().with::()); - #[test] fn dtype() { let dtype = test_harness::struct_dtype(); @@ -388,22 +378,4 @@ mod tests { .is_some_and(|f| f.signature().is_strict()) ); } - - #[test] - fn test_is_not_null_falsification() -> VortexResult<()> { - let expr = is_not_null(col("a")); - let dtype = test_harness::struct_dtype(); - - assert_eq!( - expr.bind(&dtype)?.falsify(&STATS_SESSION)?, - Some( - or( - eq(null_count(col("a")), RowCount.new_expr(EmptyOptions, []),), - all_null(col("a")), - ) - .bind(&dtype)? - ) - ); - Ok(()) - } } diff --git a/vortex-array/src/scalar_fn/fns/is_null.rs b/vortex-array/src/scalar_fn/fns/is_null.rs index e0ccbf6942c..510ef6d6323 100644 --- a/vortex-array/src/scalar_fn/fns/is_null.rs +++ b/vortex-array/src/scalar_fn/fns/is_null.rs @@ -112,7 +112,6 @@ mod tests { use std::sync::LazyLock; use vortex_buffer::buffer; - use vortex_error::VortexResult; use vortex_session::VortexSession; use crate::IntoArray; @@ -122,23 +121,14 @@ mod tests { use crate::dtype::DType; use crate::dtype::Nullability; use crate::expr::col; - use crate::expr::eq; use crate::expr::get_item; use crate::expr::is_null; - use crate::expr::lit; - use crate::expr::or; use crate::expr::root; use crate::expr::test_harness; use crate::scalar::Scalar; - use crate::stats::StatsSession; - use crate::stats::all_non_null; - use crate::stats::null_count; static SESSION: LazyLock = LazyLock::new(VortexSession::empty); - static STATS_SESSION: LazyLock = - LazyLock::new(|| VortexSession::empty().with::()); - #[test] fn dtype() { let dtype = test_harness::struct_dtype(); @@ -246,18 +236,6 @@ mod tests { assert_eq!(expr2.to_string(), "vortex.is_null($)"); } - #[test] - fn test_is_null_falsification() -> VortexResult<()> { - let expr = is_null(col("a")); - let dtype = test_harness::struct_dtype(); - - assert_eq!( - expr.bind(&dtype)?.falsify(&STATS_SESSION)?, - Some(or(eq(null_count(col("a")), lit(0u64)), all_non_null(col("a")),).bind(&dtype)?) - ); - Ok(()) - } - #[test] fn test_is_null_is_not_strict() { assert!( diff --git a/vortex-array/src/scalar_fn/fns/like/mod.rs b/vortex-array/src/scalar_fn/fns/like/mod.rs index 13ddfb7d381..da0d094c201 100644 --- a/vortex-array/src/scalar_fn/fns/like/mod.rs +++ b/vortex-array/src/scalar_fn/fns/like/mod.rs @@ -4,7 +4,6 @@ mod kernel; mod pattern; -use std::borrow::Cow; use std::fmt::Display; use std::fmt::Formatter; @@ -419,55 +418,8 @@ fn bytes_eq(lhs: &[u8], rhs: &[u8]) -> bool { lhs.len() == rhs.len() && std::iter::zip(lhs, rhs).all(|(l, r)| l == r) } -/// Variants of the LIKE filter that we know how to turn into a stats pruning predicate. -#[derive(Debug, PartialEq)] -pub(crate) enum LikeVariant<'a> { - Exact(Cow<'a, str>), - Prefix(Cow<'a, str>), -} - -impl<'a> LikeVariant<'a> { - /// Parse a LIKE pattern string into its relevant variant - pub(crate) fn from_str(string: &'a str) -> Option> { - let mut literal = None; - let mut chars = string.char_indices(); - - while let Some((idx, c)) = chars.next() { - match c { - '\\' => { - let literal = literal.get_or_insert_with(|| string[..idx].to_string()); - match chars.next() { - Some((_, escaped)) => literal.push(escaped), - None => literal.push('\\'), - } - } - '%' | '_' => { - return match literal { - Some(literal) => (!literal.is_empty()) - .then_some(LikeVariant::Prefix(Cow::Owned(literal))), - None => { - (idx != 0).then_some(LikeVariant::Prefix(Cow::Borrowed(&string[..idx]))) - } - }; - } - c => { - if let Some(literal) = &mut literal { - literal.push(c); - } - } - } - } - - Some(match literal { - Some(literal) => LikeVariant::Exact(Cow::Owned(literal)), - None => LikeVariant::Exact(Cow::Borrowed(string)), - }) - } -} - #[cfg(test)] mod tests { - use std::borrow::Cow; use std::sync::LazyLock; use rstest::rstest; @@ -490,7 +442,6 @@ mod tests { use crate::scalar::Scalar; use crate::scalar_fn::fns::like::Like; use crate::scalar_fn::fns::like::LikeOptions; - use crate::scalar_fn::fns::like::LikeVariant; use crate::scalar_fn::fns::like::is_ascii; use crate::scalar_fn::fns::like::suffix_bytes_unchecked; @@ -725,61 +676,6 @@ mod tests { assert_eq!(expr2.to_string(), "$ not ilike \"test*\""); } - fn assert_borrowed_exact(pattern: &str, expected: &str) { - let Some(LikeVariant::Exact(actual)) = LikeVariant::from_str(pattern) else { - panic!("expected borrowed exact pattern"); - }; - assert!(matches!(actual, Cow::Borrowed(_))); - assert_eq!(actual.as_ref(), expected); - } - - fn assert_owned_exact(pattern: &str, expected: &str) { - let Some(LikeVariant::Exact(actual)) = LikeVariant::from_str(pattern) else { - panic!("expected owned exact pattern"); - }; - assert!(matches!(actual, Cow::Owned(_))); - assert_eq!(actual.as_ref(), expected); - } - - fn assert_borrowed_prefix(pattern: &str, expected: &str) { - let Some(LikeVariant::Prefix(actual)) = LikeVariant::from_str(pattern) else { - panic!("expected borrowed prefix pattern"); - }; - assert!(matches!(actual, Cow::Borrowed(_))); - assert_eq!(actual.as_ref(), expected); - } - - fn assert_owned_prefix(pattern: &str, expected: &str) { - let Some(LikeVariant::Prefix(actual)) = LikeVariant::from_str(pattern) else { - panic!("expected owned prefix pattern"); - }; - assert!(matches!(actual, Cow::Owned(_))); - assert_eq!(actual.as_ref(), expected); - } - - #[test] - fn test_like_variant_borrowed_patterns() { - assert_borrowed_exact("simple", "simple"); - assert_borrowed_prefix("prefix%", "prefix"); - assert_borrowed_prefix("first%rest_stuff", "first"); - } - - #[test] - fn test_like_variant_escaped_patterns() { - assert_owned_prefix(r"\%%", "%"); - assert_owned_prefix(r"\_%", "_"); - assert_owned_prefix(r"\\%", "\\"); - assert_owned_exact(r"\%", "%"); - assert_owned_exact("trailing\\", "trailing\\"); - } - - #[test] - fn test_like_variant_unsupported_patterns() { - assert_eq!(LikeVariant::from_str("%suffix"), None); - assert_eq!(LikeVariant::from_str(r"%\%%"), None); - assert_eq!(LikeVariant::from_str("_pattern"), None); - } - #[test] fn suffix_bytes_are_value_suffixes() { let array = VarBinViewArray::from_iter_str(["short", LONG, "another long value here"]); diff --git a/vortex-array/src/scalar_fn/fns/list_contains/mod.rs b/vortex-array/src/scalar_fn/fns/list_contains/mod.rs index e1206accf96..5d92baac6f6 100644 --- a/vortex-array/src/scalar_fn/fns/list_contains/mod.rs +++ b/vortex-array/src/scalar_fn/fns/list_contains/mod.rs @@ -846,19 +846,14 @@ mod tests { use crate::dtype::PType::I32; use crate::dtype::StructFields; use crate::expr::Expression; - use crate::expr::and; use crate::expr::bound; use crate::expr::col; use crate::expr::get_item; - use crate::expr::gt; use crate::expr::in_list; use crate::expr::list_contains; use crate::expr::list_contains_opts; use crate::expr::lit; - use crate::expr::lt; - use crate::expr::or; use crate::expr::root; - use crate::expr::stats::Stat; use crate::optimizer::ArrayOptimizer; use crate::scalar::PValue; use crate::scalar::Scalar; @@ -867,19 +862,10 @@ mod tests { use crate::scalar_fn::fns::list_contains::PreparedSet; use crate::scalar_fn::fns::list_contains::PreparedSetData; use crate::scalar_fn::fns::literal::Literal; - use crate::stats::StatsSession; - use crate::stats::stat as stat_expr; use crate::validity::Validity; static SESSION: LazyLock = LazyLock::new(VortexSession::empty); - static STATS_SESSION: LazyLock = - LazyLock::new(|| VortexSession::empty().with::()); - - fn stat(expr: Expression, stat: Stat) -> Expression { - stat_expr(expr, stat.aggregate_fn().unwrap()) - } - fn test_array() -> ArrayRef { let mut ctx = SESSION.create_execution_ctx(); ListArray::try_new( @@ -1025,49 +1011,6 @@ mod tests { ); } - #[test] - pub fn list_falsification() -> VortexResult<()> { - let expr = list_contains( - lit(Scalar::list( - Arc::new(DType::Primitive(I32, Nullability::NonNullable)), - vec![1.into(), 2.into(), 3.into()], - Nullability::NonNullable, - )), - col("a"), - ); - let scope = DType::Struct( - StructFields::new( - ["a"].into(), - vec![DType::Primitive(I32, Nullability::NonNullable)], - ), - Nullability::NonNullable, - ); - - assert_eq!( - expr.bind(&scope)?.falsify(&STATS_SESSION)?, - Some( - and( - and( - or( - lt(stat(col("a"), Stat::Max), lit(1i32)), - gt(stat(col("a"), Stat::Min), lit(1i32)), - ), - or( - lt(stat(col("a"), Stat::Max), lit(2i32)), - gt(stat(col("a"), Stat::Min), lit(2i32)), - ) - ), - or( - lt(stat(col("a"), Stat::Max), lit(3i32)), - gt(stat(col("a"), Stat::Min), lit(3i32)), - ) - ) - .bind(&scope)? - ) - ); - Ok(()) - } - #[test] pub fn test_display() { let expr = list_contains(get_item("tags", root()), lit("urgent")); @@ -2030,16 +1973,15 @@ mod tests { #[test] fn options_round_trip_through_serde() -> VortexResult<()> { use crate::scalar_fn::ScalarFnVTable; - let session = VortexSession::empty(); for options in [ListContainsOptions::default(), SQL] { let bytes = ListContains .serialize(&options)? .vortex_expect("serialized"); - assert_eq!(ListContains.deserialize(&bytes, &session)?, options); + assert_eq!(ListContains.deserialize(&bytes, &SESSION)?, options); } // Files written before the option existed carry no bytes at all. assert_eq!( - ListContains.deserialize(&[], &session)?, + ListContains.deserialize(&[], &SESSION)?, ListContainsOptions::default() ); Ok(()) diff --git a/vortex-array/src/stats/mod.rs b/vortex-array/src/stats/mod.rs index f7610fc71e4..ea8ae6b58a6 100644 --- a/vortex-array/src/stats/mod.rs +++ b/vortex-array/src/stats/mod.rs @@ -7,28 +7,13 @@ use arrow_buffer::BooleanBufferBuilder; use arrow_buffer::MutableBuffer; use arrow_buffer::bit_iterator::BitIterator; use enum_iterator::last; -pub use expr::all_nan; -pub use expr::all_non_nan; -pub use expr::all_non_null; -pub use expr::all_null; -pub use expr::bound; -pub use expr::min_max; -pub use expr::nan_count; -pub use expr::null_count; -pub use expr::stat; -pub use expr::sum; pub use stats_set::*; mod array; -pub mod bind; -pub mod expr; pub mod flatbuffers; -pub mod rewrite; -pub mod session; mod stats_set; pub use array::*; -pub use session::*; use vortex_error::VortexExpect; use crate::expr::stats::Stat; diff --git a/vortex-arrow/benches/to_arrow.rs b/vortex-arrow/benches/to_arrow.rs index bc063d0dfe5..d0c85449325 100644 --- a/vortex-arrow/benches/to_arrow.rs +++ b/vortex-arrow/benches/to_arrow.rs @@ -39,7 +39,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::session::ArraySessionExt; -use vortex_array::stats::session::StatsSession; #[expect( deprecated, reason = "benchmark comparing deprecated method with new one" @@ -68,8 +67,7 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() - .with::(); + .with::(); vortex_fsst::initialize(&session); vortex_onpair::initialize(&session); session.arrays().register(Zstd); diff --git a/vortex-btrblocks/benches/compress.rs b/vortex-btrblocks/benches/compress.rs index 974824ebd38..828a142ba99 100644 --- a/vortex-btrblocks/benches/compress.rs +++ b/vortex-btrblocks/benches/compress.rs @@ -25,7 +25,6 @@ mod benchmarks { use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; - use vortex_array::stats::session::StatsSession; use vortex_btrblocks::BtrBlocksCompressorBuilder; use vortex_buffer::buffer_mut; use vortex_session::VortexSession; @@ -39,7 +38,6 @@ mod benchmarks { .with::() .with::() .with::() - .with::() }); fn make_clickbench_window_name() -> ArrayRef { diff --git a/vortex-btrblocks/benches/compress_listview.rs b/vortex-btrblocks/benches/compress_listview.rs index 43ff8892167..6476c0e02f2 100644 --- a/vortex-btrblocks/benches/compress_listview.rs +++ b/vortex-btrblocks/benches/compress_listview.rs @@ -29,7 +29,6 @@ mod benchmarks { use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; - use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_btrblocks::BtrBlocksCompressorBuilder; use vortex_buffer::buffer_mut; @@ -46,7 +45,6 @@ mod benchmarks { .with::() .with::() .with::() - .with::() }); const SHORT_STRINGS: &[&str] = &[ diff --git a/vortex-compressor/benches/dict_encode.rs b/vortex-compressor/benches/dict_encode.rs index 4543b74e1b4..b4b4abb02fa 100644 --- a/vortex-compressor/benches/dict_encode.rs +++ b/vortex-compressor/benches/dict_encode.rs @@ -18,7 +18,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_session::VortexSession; @@ -31,7 +30,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn make_array() -> PrimitiveArray { diff --git a/vortex-compressor/benches/float_stats.rs b/vortex-compressor/benches/float_stats.rs index 52a8e45dbd1..78e0b18419f 100644 --- a/vortex-compressor/benches/float_stats.rs +++ b/vortex-compressor/benches/float_stats.rs @@ -16,7 +16,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -35,7 +34,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const LEN: usize = 64 * 1024; diff --git a/vortex-compressor/benches/integer_stats.rs b/vortex-compressor/benches/integer_stats.rs index 2fab379a7ee..c7db4677d98 100644 --- a/vortex-compressor/benches/integer_stats.rs +++ b/vortex-compressor/benches/integer_stats.rs @@ -16,7 +16,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -35,7 +34,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); const LEN: usize = 64 * 1024; diff --git a/vortex-compressor/benches/stats_calc.rs b/vortex-compressor/benches/stats_calc.rs index 7a7d2e78bcf..94340c04eb6 100644 --- a/vortex-compressor/benches/stats_calc.rs +++ b/vortex-compressor/benches/stats_calc.rs @@ -19,7 +19,6 @@ mod benchmarks { use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; - use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_compressor::stats::GenerateStatsOptions; @@ -34,7 +33,6 @@ mod benchmarks { .with::() .with::() .with::() - .with::() }); const LEN: usize = 64_000; diff --git a/vortex-cuda/benches/alp_cuda.rs b/vortex-cuda/benches/alp_cuda.rs index 3bc61242f50..dbe4392829d 100644 --- a/vortex-cuda/benches/alp_cuda.rs +++ b/vortex-cuda/benches/alp_cuda.rs @@ -40,7 +40,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_cuda::CudaDispatchMode; use vortex_cuda::CudaSession; use vortex_cuda::executor::CudaArrayExt; @@ -58,7 +57,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-cuda/benches/arrow_validity_cuda.rs b/vortex-cuda/benches/arrow_validity_cuda.rs index 9bd501c3ea6..f7ad0f54061 100644 --- a/vortex-cuda/benches/arrow_validity_cuda.rs +++ b/vortex-cuda/benches/arrow_validity_cuda.rs @@ -35,7 +35,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_cuda::CudaExecutionCtx; use vortex_cuda::CudaSession; use vortex_cuda::arrow::ArrowDeviceArray; @@ -54,7 +53,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-cuda/benches/bitpacked_cuda.rs b/vortex-cuda/benches/bitpacked_cuda.rs index 413ca0a0052..c4f816ae68f 100644 --- a/vortex-cuda/benches/bitpacked_cuda.rs +++ b/vortex-cuda/benches/bitpacked_cuda.rs @@ -39,7 +39,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_cuda::CudaDispatchMode; use vortex_cuda::CudaSession; use vortex_cuda::executor::CudaArrayExt; @@ -56,7 +55,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-cuda/benches/delta_cuda.rs b/vortex-cuda/benches/delta_cuda.rs index ce3263558dc..893d14b6013 100644 --- a/vortex-cuda/benches/delta_cuda.rs +++ b/vortex-cuda/benches/delta_cuda.rs @@ -40,7 +40,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_cuda::CudaDispatchMode; use vortex_cuda::CudaSession; use vortex_cuda::executor::CudaArrayExt; @@ -58,7 +57,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-cuda/benches/dynamic_dispatch_cuda.rs b/vortex-cuda/benches/dynamic_dispatch_cuda.rs index d9f3303a37d..e0d5b694788 100644 --- a/vortex-cuda/benches/dynamic_dispatch_cuda.rs +++ b/vortex-cuda/benches/dynamic_dispatch_cuda.rs @@ -67,7 +67,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_cuda::CudaBufferExt; use vortex_cuda::CudaDispatchMode; use vortex_cuda::CudaExecutionCtx; @@ -90,7 +89,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-cuda/benches/for_cuda.rs b/vortex-cuda/benches/for_cuda.rs index 919553874c4..c5a6464d2e7 100644 --- a/vortex-cuda/benches/for_cuda.rs +++ b/vortex-cuda/benches/for_cuda.rs @@ -41,7 +41,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_cuda::CudaDispatchMode; use vortex_cuda::CudaSession; use vortex_cuda::executor::CudaArrayExt; @@ -59,7 +58,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-cuda/benches/fsst_cuda.rs b/vortex-cuda/benches/fsst_cuda.rs index cc9c1d43a79..c0d216bf287 100644 --- a/vortex-cuda/benches/fsst_cuda.rs +++ b/vortex-cuda/benches/fsst_cuda.rs @@ -28,7 +28,6 @@ use vortex::array::memory::MemorySession; use vortex::array::optimizer::kernels::KernelSession; use vortex::array::scalar_fn::session::ScalarFnSession; use vortex::array::session::ArraySession; -use vortex::array::stats::session::StatsSession; use vortex::dtype::DType; use vortex::dtype::Nullability; use vortex::encodings::fsst::FSST; @@ -65,7 +64,6 @@ fn session_with_varbin_layout(layout: VarBinExportLayout) -> VortexSession { .with::() .with::() .with::() - .with::() .with_some( CudaSession::try_default() .vortex_expect("failed to create CUDA session") diff --git a/vortex-expr/Cargo.toml b/vortex-expr/Cargo.toml new file mode 100644 index 00000000000..cc030485545 --- /dev/null +++ b/vortex-expr/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "vortex-expr" +authors = { workspace = true } +categories = { workspace = true } +description = "Analyses and rewrites over Vortex expression trees" +edition = { workspace = true } +include = { workspace = true } +keywords = { workspace = true } +license = { workspace = true } +readme = { workspace = true } +repository = { workspace = true } +rust-version = { workspace = true } +version = { workspace = true } + +[dependencies] +itertools = { workspace = true } +parking_lot = { workspace = true } +tracing = { workspace = true } +vortex-array = { workspace = true } +vortex-error = { workspace = true } +vortex-session = { workspace = true } +vortex-utils = { workspace = true } + +[lints] +workspace = true + +[dev-dependencies] +rstest = { workspace = true } +vortex-array = { workspace = true, features = ["_test-harness"] } +vortex-buffer = { workspace = true } diff --git a/vortex-array/src/expr/analysis/annotation.rs b/vortex-expr/src/analysis/annotation.rs similarity index 94% rename from vortex-array/src/expr/analysis/annotation.rs rename to vortex-expr/src/analysis/annotation.rs index 61fa8cd0c80..e24172203e2 100644 --- a/vortex-array/src/expr/analysis/annotation.rs +++ b/vortex-expr/src/analysis/annotation.rs @@ -3,17 +3,16 @@ use std::hash::Hash; +use vortex_array::expr::BoundExpression; +use vortex_array::expr::ExactBoundExpr; +use vortex_array::expr::traversal::NodeExt; +use vortex_array::expr::traversal::NodeVisitor; +use vortex_array::expr::traversal::TraversalOrder; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_utils::aliases::hash_map::HashMap; use vortex_utils::aliases::hash_set::HashSet; -use crate::expr::BoundExpression; -use crate::expr::ExactBoundExpr; -use crate::expr::traversal::NodeExt; -use crate::expr::traversal::NodeVisitor; -use crate::expr::traversal::TraversalOrder; - /// A value that can annotate an expression node. pub trait Annotation: Clone + Hash + Eq {} diff --git a/vortex-array/src/expr/analysis/immediate_access.rs b/vortex-expr/src/analysis/immediate_access.rs similarity index 90% rename from vortex-array/src/expr/analysis/immediate_access.rs rename to vortex-expr/src/analysis/immediate_access.rs index 6258c35649f..d0e31577bd6 100644 --- a/vortex-array/src/expr/analysis/immediate_access.rs +++ b/vortex-expr/src/analysis/immediate_access.rs @@ -1,14 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::dtype::FieldName; +use vortex_array::dtype::StructFields; +use vortex_array::expr::BoundExpression; +use vortex_array::scalar_fn::fns::get_item::GetItem; +use vortex_array::scalar_fn::fns::select::Select; use vortex_error::VortexExpect; -use crate::dtype::FieldName; -use crate::dtype::StructFields; -use crate::expr::BoundExpression; -use crate::expr::analysis::AnnotationFn; -use crate::scalar_fn::fns::get_item::GetItem; -use crate::scalar_fn::fns::select::Select; +use crate::analysis::AnnotationFn; /// Returns the "free fields" for this bound expression node. /// diff --git a/vortex-array/src/expr/analysis/labeling.rs b/vortex-expr/src/analysis/labeling.rs similarity index 89% rename from vortex-array/src/expr/analysis/labeling.rs rename to vortex-expr/src/analysis/labeling.rs index 45aa7c3c67d..a7dee890f4d 100644 --- a/vortex-array/src/expr/analysis/labeling.rs +++ b/vortex-expr/src/analysis/labeling.rs @@ -1,16 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::expr::BoundExpression; +use vortex_array::expr::ExactBoundExpr; +use vortex_array::expr::traversal::NodeExt; +use vortex_array::expr::traversal::NodeVisitor; +use vortex_array::expr::traversal::TraversalOrder; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_utils::aliases::hash_map::HashMap; -use crate::expr::BoundExpression; -use crate::expr::ExactBoundExpr; -use crate::expr::traversal::NodeExt; -use crate::expr::traversal::NodeVisitor; -use crate::expr::traversal::TraversalOrder; - /// Labels keyed by bound-tree identity. pub type BoundLabels = HashMap; @@ -70,11 +69,12 @@ where #[cfg(test)] mod tests { + use vortex_array::expr::col; + use vortex_array::expr::eq; + use vortex_array::expr::lit; + use vortex_array::expr::test_harness::struct_dtype; + use super::*; - use crate::expr::col; - use crate::expr::eq; - use crate::expr::lit; - use crate::expr::test_harness::struct_dtype; #[test] fn test_tree_depth() -> VortexResult<()> { diff --git a/vortex-array/src/expr/analysis/mod.rs b/vortex-expr/src/analysis/mod.rs similarity index 100% rename from vortex-array/src/expr/analysis/mod.rs rename to vortex-expr/src/analysis/mod.rs diff --git a/vortex-array/src/expr/analysis/referenced_field_paths.rs b/vortex-expr/src/analysis/referenced_field_paths.rs similarity index 89% rename from vortex-array/src/expr/analysis/referenced_field_paths.rs rename to vortex-expr/src/analysis/referenced_field_paths.rs index 48ef285c20a..55cec7afc5e 100644 --- a/vortex-array/src/expr/analysis/referenced_field_paths.rs +++ b/vortex-expr/src/analysis/referenced_field_paths.rs @@ -1,20 +1,19 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::dtype::Field; +use vortex_array::dtype::FieldPath; +use vortex_array::dtype::FieldPathSet; +use vortex_array::expr::BoundExpression; +use vortex_array::expr::traversal::FoldDownContext; +use vortex_array::expr::traversal::FoldUp; +use vortex_array::expr::traversal::NodeExt; +use vortex_array::expr::traversal::NodeFolderContext; +use vortex_array::scalar_fn::fns::get_item::GetItem; +use vortex_array::scalar_fn::fns::select::Select; use vortex_error::VortexResult; use vortex_error::vortex_err; -use crate::dtype::Field; -use crate::dtype::FieldPath; -use crate::dtype::FieldPathSet; -use crate::expr::BoundExpression; -use crate::expr::traversal::FoldDownContext; -use crate::expr::traversal::FoldUp; -use crate::expr::traversal::NodeExt; -use crate::expr::traversal::NodeFolderContext; -use crate::scalar_fn::fns::get_item::GetItem; -use crate::scalar_fn::fns::select::Select; - /// Returns the rooted field paths referenced by an expression. /// /// Iterating the returned set (via [`IntoIterator`]) yields the prefix-minimal covering set: when @@ -125,19 +124,19 @@ impl NodeFolderContext for ReferencedFieldPaths { #[cfg(test)] mod tests { + use vortex_array::dtype::DType; + use vortex_array::dtype::Nullability::NonNullable; + use vortex_array::dtype::PType::I32; + use vortex_array::dtype::StructFields; + use vortex_array::expr::Expression; + use vortex_array::expr::get_item; + use vortex_array::expr::pack; + use vortex_array::expr::root; + use vortex_array::expr::select; + use vortex_array::expr::select_exclude; use vortex_utils::aliases::hash_set::HashSet; use super::*; - use crate::dtype::DType; - use crate::dtype::Nullability::NonNullable; - use crate::dtype::PType::I32; - use crate::dtype::StructFields; - use crate::expr::Expression; - use crate::expr::get_item; - use crate::expr::pack; - use crate::expr::root; - use crate::expr::select; - use crate::expr::select_exclude; fn scope() -> DType { DType::Struct( diff --git a/vortex-array/src/expr/forms/extract_conjuncts.rs b/vortex-expr/src/forms/extract_conjuncts.rs similarity index 87% rename from vortex-array/src/expr/forms/extract_conjuncts.rs rename to vortex-expr/src/forms/extract_conjuncts.rs index 7435783b3fb..86e34b97964 100644 --- a/vortex-array/src/expr/forms/extract_conjuncts.rs +++ b/vortex-expr/src/forms/extract_conjuncts.rs @@ -1,9 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use crate::expr::Expression; -use crate::scalar_fn::fns::binary::Binary; -use crate::scalar_fn::fns::operators::Operator; +use vortex_array::expr::Expression; +use vortex_array::scalar_fn::fns::binary::Binary; +use vortex_array::scalar_fn::fns::operators::Operator; /// Converting an expression to a conjunctive normal form can lead to a large number of expression /// nodes. diff --git a/vortex-array/src/expr/forms/mod.rs b/vortex-expr/src/forms/mod.rs similarity index 100% rename from vortex-array/src/expr/forms/mod.rs rename to vortex-expr/src/forms/mod.rs diff --git a/vortex-expr/src/lib.rs b/vortex-expr/src/lib.rs new file mode 100644 index 00000000000..b47aa684493 --- /dev/null +++ b/vortex-expr/src/lib.rs @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +//! Analyses and rewrites over Vortex expression trees. +//! +//! The expression types themselves ([`Expression`](vortex_array::expr::Expression), +//! [`BoundExpression`](vortex_array::expr::BoundExpression)) and their optimizer live in +//! `vortex_array::expr`. This crate holds the tooling that scan planning builds on top of them: +//! tree annotation and labeling ([`analysis`]), normal forms such as conjunct extraction +//! ([`forms`]), partitioning and substitution rewrites ([`transform`]), and statistics-based +//! pruning ([`stats`]). + +pub mod analysis; +pub mod forms; +pub mod stats; +pub mod transform; + +pub use analysis::*; diff --git a/vortex-array/src/stats/bind.rs b/vortex-expr/src/stats/bind.rs similarity index 90% rename from vortex-array/src/stats/bind.rs rename to vortex-expr/src/stats/bind.rs index c395cce9723..337752d7a15 100644 --- a/vortex-array/src/stats/bind.rs +++ b/vortex-expr/src/stats/bind.rs @@ -13,17 +13,16 @@ //! stats. This lets all callers share the same falsification rules while keeping layout-specific //! stat storage behind [`StatBinder`]. +use vortex_array::aggregate_fn::AggregateFnRef; +use vortex_array::dtype::DType; +use vortex_array::expr::BoundExpression; +use vortex_array::expr::bound::lit; +use vortex_array::expr::traversal::NodeExt; +use vortex_array::expr::traversal::Transformed; +use vortex_array::scalar::Scalar; +use vortex_array::scalar_fn::fns::stat::StatFn; use vortex_error::VortexResult; -use crate::aggregate_fn::AggregateFnRef; -use crate::dtype::DType; -use crate::expr::BoundExpression; -use crate::expr::bound::lit; -use crate::expr::traversal::NodeExt; -use crate::expr::traversal::Transformed; -use crate::scalar::Scalar; -use crate::scalar_fn::fns::stat::StatFn; - /// A target that can bind abstract statistics to concrete expressions. /// /// Implementations define how a pruning proof should read stats from a specific backing @@ -92,20 +91,20 @@ fn null_expr(dtype: DType) -> VortexResult { #[cfg(test)] mod tests { + use vortex_array::dtype::Nullability; + use vortex_array::dtype::PType; + use vortex_array::dtype::StructFields; + use vortex_array::expr::and; + use vortex_array::expr::col; + use vortex_array::expr::get_item; + use vortex_array::expr::is_null; + use vortex_array::expr::lit; + use vortex_array::expr::or; + use vortex_array::expr::root; + use vortex_array::expr::stats::Stat; use vortex_error::VortexResult; use super::*; - use crate::dtype::Nullability; - use crate::dtype::PType; - use crate::dtype::StructFields; - use crate::expr::and; - use crate::expr::col; - use crate::expr::get_item; - use crate::expr::is_null; - use crate::expr::lit; - use crate::expr::or; - use crate::expr::root; - use crate::expr::stats::Stat; use crate::stats::all_non_nan; use crate::stats::nan_count; diff --git a/vortex-array/src/stats/expr.rs b/vortex-expr/src/stats/expr.rs similarity index 89% rename from vortex-array/src/stats/expr.rs rename to vortex-expr/src/stats/expr.rs index a9abc70c0b7..2952ccc761c 100644 --- a/vortex-array/src/stats/expr.rs +++ b/vortex-expr/src/stats/expr.rs @@ -3,26 +3,25 @@ //! Expression constructors for statistics backed by aggregate functions. +use vortex_array::aggregate_fn::AggregateFnRef; +use vortex_array::aggregate_fn::AggregateFnVTableExt; +use vortex_array::aggregate_fn::EmptyOptions; +use vortex_array::aggregate_fn::NumericalAggregateOpts; +use vortex_array::aggregate_fn::fns::all_nan::AllNan; +use vortex_array::aggregate_fn::fns::all_non_nan::AllNonNan; +use vortex_array::aggregate_fn::fns::all_non_null::AllNonNull; +use vortex_array::aggregate_fn::fns::all_null::AllNull; +use vortex_array::aggregate_fn::fns::min_max::MinMax; +use vortex_array::aggregate_fn::fns::nan_count::NanCount; +use vortex_array::aggregate_fn::fns::null_count::NullCount; +use vortex_array::aggregate_fn::fns::sum::Sum; +use vortex_array::expr::BoundExpression; +use vortex_array::expr::Expression; +use vortex_array::scalar_fn::ScalarFnVTableExt; +pub use vortex_array::scalar_fn::fns::stat::StatFn; +pub use vortex_array::scalar_fn::fns::stat::StatOptions; use vortex_error::VortexExpect; -use crate::aggregate_fn::AggregateFnRef; -use crate::aggregate_fn::AggregateFnVTableExt; -use crate::aggregate_fn::EmptyOptions; -use crate::aggregate_fn::NumericalAggregateOpts; -use crate::aggregate_fn::fns::all_nan::AllNan; -use crate::aggregate_fn::fns::all_non_nan::AllNonNan; -use crate::aggregate_fn::fns::all_non_null::AllNonNull; -use crate::aggregate_fn::fns::all_null::AllNull; -use crate::aggregate_fn::fns::min_max::MinMax; -use crate::aggregate_fn::fns::nan_count::NanCount; -use crate::aggregate_fn::fns::null_count::NullCount; -use crate::aggregate_fn::fns::sum::Sum; -use crate::expr::BoundExpression; -use crate::expr::Expression; -use crate::scalar_fn::ScalarFnVTableExt; -pub use crate::scalar_fn::fns::stat::StatFn; -pub use crate::scalar_fn::fns::stat::StatOptions; - /// Creates an expression that reads a stored aggregate statistic for `expr`. /// /// If the statistic is not available in the current stats scope, evaluating the expression returns @@ -113,11 +112,11 @@ fn bound_nan_count(expr: BoundExpression) -> BoundExpression { /// Constructors for statistic expressions whose input has already been bound. /// -/// These mirror the constructors in [`crate::stats`] and panic when the aggregate does not support +/// These mirror the constructors in [`vortex_array::stats`] and panic when the aggregate does not support /// the input dtype. pub mod bound { - use crate::aggregate_fn::AggregateFnRef; - use crate::expr::BoundExpression; + use vortex_array::aggregate_fn::AggregateFnRef; + use vortex_array::expr::BoundExpression; /// Creates a bound expression that reads a stored aggregate statistic. pub fn stat(expr: BoundExpression, aggregate_fn: AggregateFnRef) -> BoundExpression { @@ -169,6 +168,25 @@ pub mod bound { mod tests { use std::sync::LazyLock; + use vortex_array::Canonical; + use vortex_array::IntoArray; + use vortex_array::VortexSessionExecute; + use vortex_array::arrays::Chunked; + use vortex_array::arrays::ChunkedArray; + use vortex_array::arrays::ConstantArray; + use vortex_array::arrays::PrimitiveArray; + use vortex_array::arrays::chunked::ChunkedArrayExt; + use vortex_array::assert_arrays_eq; + use vortex_array::dtype::DType; + use vortex_array::dtype::Nullability; + use vortex_array::dtype::PType; + use vortex_array::expr::bound as bound_expr; + use vortex_array::expr::root; + use vortex_array::expr::stats::Precision; + use vortex_array::expr::stats::Stat; + use vortex_array::scalar::Scalar; + use vortex_array::scalar::ScalarValue; + use vortex_array::validity::Validity; use vortex_buffer::buffer; use vortex_error::VortexExpect; use vortex_error::VortexResult; @@ -182,25 +200,6 @@ mod tests { use super::null_count; use super::stat; use super::sum; - use crate::Canonical; - use crate::IntoArray; - use crate::VortexSessionExecute; - use crate::arrays::Chunked; - use crate::arrays::ChunkedArray; - use crate::arrays::ConstantArray; - use crate::arrays::PrimitiveArray; - use crate::arrays::chunked::ChunkedArrayExt; - use crate::assert_arrays_eq; - use crate::dtype::DType; - use crate::dtype::Nullability; - use crate::dtype::PType; - use crate::expr::bound as bound_expr; - use crate::expr::root; - use crate::expr::stats::Precision; - use crate::expr::stats::Stat; - use crate::scalar::Scalar; - use crate::scalar::ScalarValue; - use crate::validity::Validity; static SESSION: LazyLock = LazyLock::new(VortexSession::empty); @@ -215,7 +214,7 @@ mod tests { bound.dtype(), &DType::Primitive(PType::I64, Nullability::Nullable) ); - assert_eq!(bound, sum(crate::expr::root()).bind(&input_dtype)?); + assert_eq!(bound, sum(vortex_array::expr::root()).bind(&input_dtype)?); Ok(()) } diff --git a/vortex-expr/src/stats/mod.rs b/vortex-expr/src/stats/mod.rs new file mode 100644 index 00000000000..71d9ebb1c49 --- /dev/null +++ b/vortex-expr/src/stats/mod.rs @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +//! Statistics-based pruning: stat expressions, binding them to available statistics, and the +//! falsify/satisfy rewrite rules that turn predicates into pruning predicates. + +pub use expr::all_nan; +pub use expr::all_non_nan; +pub use expr::all_non_null; +pub use expr::all_null; +pub use expr::bound; +pub use expr::min_max; +pub use expr::nan_count; +pub use expr::null_count; +pub use expr::stat; +pub use expr::sum; +pub use session::*; + +pub mod bind; +pub mod expr; +pub mod rewrite; +pub mod session; diff --git a/vortex-array/src/stats/rewrite.rs b/vortex-expr/src/stats/rewrite.rs similarity index 83% rename from vortex-array/src/stats/rewrite.rs rename to vortex-expr/src/stats/rewrite.rs index ffc521473e0..968fbfad9ba 100644 --- a/vortex-array/src/stats/rewrite.rs +++ b/vortex-expr/src/stats/rewrite.rs @@ -6,20 +6,23 @@ use std::fmt::Debug; use std::sync::Arc; +use vortex_array::dtype::DType; +use vortex_array::expr::BoundExpression; +use vortex_array::scalar_fn::ScalarFnId; +use vortex_array::scalar_fn::ScalarFnVTableExt; +use vortex_array::scalar_fn::fns::binary::Binary; +use vortex_array::scalar_fn::fns::operators::Operator; use vortex_error::VortexResult; use vortex_error::vortex_ensure; use vortex_session::VortexSession; use vortex_utils::iter::ReduceBalancedIterExt; -use crate::dtype::DType; -use crate::expr::BoundExpression; -use crate::scalar_fn::ScalarFnId; -use crate::scalar_fn::ScalarFnVTableExt; -use crate::scalar_fn::fns::binary::Binary; -use crate::scalar_fn::fns::operators::Operator; use crate::stats::session::StatsSessionExt; mod builtins; +#[cfg(test)] +mod fn_tests; +mod like_variant; pub(crate) use builtins::register_builtins; @@ -111,6 +114,25 @@ pub fn satisfy( rewrite(expr, session, StatsRewriteRule::satisfy) } +/// Statistics-based pruning methods on [`BoundExpression`] predicates. +pub trait BoundExpressionPruneExt { + /// Return an expression that proves this predicate is definitely false from statistics. + fn falsify(&self, session: &VortexSession) -> VortexResult>; + + /// Return an expression that proves this predicate is definitely true from statistics. + fn satisfy(&self, session: &VortexSession) -> VortexResult>; +} + +impl BoundExpressionPruneExt for BoundExpression { + fn falsify(&self, session: &VortexSession) -> VortexResult> { + falsify(self, session) + } + + fn satisfy(&self, session: &VortexSession) -> VortexResult> { + satisfy(self, session) + } +} + fn rewrite( expr: &BoundExpression, session: &VortexSession, @@ -145,20 +167,21 @@ fn rewrite( mod tests { use std::sync::LazyLock; + use vortex_array::dtype::DType; + use vortex_array::dtype::Nullability; + use vortex_array::dtype::PType; + use vortex_array::expr::BoundExpression; + use vortex_array::expr::lit; + use vortex_array::expr::not; + use vortex_array::expr::or; + use vortex_array::scalar_fn::ScalarFnId; + use vortex_array::scalar_fn::ScalarFnVTable; + use vortex_array::scalar_fn::fns::not::Not; use vortex_error::VortexResult; use vortex_session::VortexSession; use super::StatsRewriteRule; - use crate::dtype::DType; - use crate::dtype::Nullability; - use crate::dtype::PType; - use crate::expr::BoundExpression; - use crate::expr::lit; - use crate::expr::not; - use crate::expr::or; - use crate::scalar_fn::ScalarFnId; - use crate::scalar_fn::ScalarFnVTable; - use crate::scalar_fn::fns::not::Not; + use crate::stats::rewrite::BoundExpressionPruneExt; use crate::stats::session::StatsSessionExt; static SESSION: LazyLock = LazyLock::new(VortexSession::empty); diff --git a/vortex-array/src/stats/rewrite/builtins.rs b/vortex-expr/src/stats/rewrite/builtins.rs similarity index 90% rename from vortex-array/src/stats/rewrite/builtins.rs rename to vortex-expr/src/stats/rewrite/builtins.rs index d1ef7e00b2c..d7c65947195 100644 --- a/vortex-array/src/stats/rewrite/builtins.rs +++ b/vortex-expr/src/stats/rewrite/builtins.rs @@ -2,59 +2,57 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::cmp::Ordering; -use std::sync::Arc; -use vortex_array::stats::rewrite::falsify; +use vortex_array::aggregate_fn::AggregateFnRef; +use vortex_array::aggregate_fn::AggregateFnVTableExt; +use vortex_array::aggregate_fn::EmptyOptions as AggregateEmptyOptions; +use vortex_array::aggregate_fn::fns::all_nan::AllNan; +use vortex_array::aggregate_fn::fns::all_non_nan::AllNonNan; +use vortex_array::aggregate_fn::fns::all_non_null::AllNonNull; +use vortex_array::aggregate_fn::fns::all_null::AllNull; +use vortex_array::dtype::DType; +use vortex_array::expr::BoundExpression; +use vortex_array::expr::bound::and; +use vortex_array::expr::bound::and_collect; +use vortex_array::expr::bound::binary; +use vortex_array::expr::bound::cast; +use vortex_array::expr::bound::dynamic_with_options; +use vortex_array::expr::bound::eq; +use vortex_array::expr::bound::gt; +use vortex_array::expr::bound::gt_eq; +use vortex_array::expr::bound::lit; +use vortex_array::expr::bound::lt; +use vortex_array::expr::bound::lt_eq; +use vortex_array::expr::bound::or; +use vortex_array::expr::bound::or_collect; +use vortex_array::expr::stats::Stat; +use vortex_array::scalar::Scalar; +use vortex_array::scalar::StringLike; +use vortex_array::scalar_fn::EmptyOptions; +use vortex_array::scalar_fn::ScalarFnId; +use vortex_array::scalar_fn::ScalarFnVTable; +use vortex_array::scalar_fn::ScalarFnVTableExt; +use vortex_array::scalar_fn::fns::between::Between; +use vortex_array::scalar_fn::fns::binary::Binary; +use vortex_array::scalar_fn::fns::cast::Cast; +use vortex_array::scalar_fn::fns::dynamic::DynamicComparison; +use vortex_array::scalar_fn::fns::is_nan::IsNan; +use vortex_array::scalar_fn::fns::is_not_null::IsNotNull; +use vortex_array::scalar_fn::fns::is_null::IsNull; +use vortex_array::scalar_fn::fns::like::Like; +use vortex_array::scalar_fn::fns::list_contains::ListContains; +use vortex_array::scalar_fn::fns::literal::Literal; +use vortex_array::scalar_fn::fns::operators::CompareOperator; +use vortex_array::scalar_fn::fns::operators::Operator; +use vortex_array::scalar_fn::internal::row_count::RowCount; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_session::VortexSession; -use crate::aggregate_fn::AggregateFnRef; -use crate::aggregate_fn::AggregateFnVTableExt; -use crate::aggregate_fn::EmptyOptions as AggregateEmptyOptions; -use crate::aggregate_fn::fns::all_nan::AllNan; -use crate::aggregate_fn::fns::all_non_nan::AllNonNan; -use crate::aggregate_fn::fns::all_non_null::AllNonNull; -use crate::aggregate_fn::fns::all_null::AllNull; -use crate::dtype::DType; -use crate::expr::BoundExpression; -use crate::expr::bound::and; -use crate::expr::bound::and_collect; -use crate::expr::bound::binary; -use crate::expr::bound::cast; -use crate::expr::bound::dynamic_with_options; -use crate::expr::bound::eq; -use crate::expr::bound::gt; -use crate::expr::bound::gt_eq; -use crate::expr::bound::lit; -use crate::expr::bound::lt; -use crate::expr::bound::lt_eq; -use crate::expr::bound::or; -use crate::expr::bound::or_collect; -use crate::expr::stats::Stat; -use crate::scalar::Scalar; -use crate::scalar::StringLike; -use crate::scalar_fn::EmptyOptions; -use crate::scalar_fn::ScalarFnId; -use crate::scalar_fn::ScalarFnVTable; -use crate::scalar_fn::ScalarFnVTableExt; -use crate::scalar_fn::fns::between::Between; -use crate::scalar_fn::fns::binary::Binary; -use crate::scalar_fn::fns::cast::Cast; -use crate::scalar_fn::fns::dynamic::DynamicComparison; -use crate::scalar_fn::fns::dynamic::DynamicComparisonExpr; -use crate::scalar_fn::fns::is_nan::IsNan; -use crate::scalar_fn::fns::is_not_null::IsNotNull; -use crate::scalar_fn::fns::is_null::IsNull; -use crate::scalar_fn::fns::like::Like; -use crate::scalar_fn::fns::like::LikeVariant; -use crate::scalar_fn::fns::list_contains::ListContains; -use crate::scalar_fn::fns::literal::Literal; -use crate::scalar_fn::fns::operators::CompareOperator; -use crate::scalar_fn::fns::operators::Operator; -use crate::scalar_fn::internal::row_count::RowCount; use crate::stats::bound::stat; use crate::stats::rewrite::StatsRewriteRule; +use crate::stats::rewrite::falsify; +use crate::stats::rewrite::like_variant::LikeVariant; use crate::stats::session::StatsSession; /// Register built-in stats rewrite rules. @@ -630,7 +628,7 @@ fn dynamic_comparison_falsify( let dynamic = expr.as_::(); let lhs = expr.child(0); - let Some((operator, lhs_stat)) = (match dynamic.operator { + let Some((operator, lhs_stat)) = (match dynamic.operator() { CompareOperator::Eq | CompareOperator::NotEq => None, CompareOperator::Gt => max(lhs).map(|lhs_stat| (CompareOperator::Lte, lhs_stat)), CompareOperator::Gte => max(lhs).map(|lhs_stat| (CompareOperator::Lt, lhs_stat)), @@ -641,11 +639,7 @@ fn dynamic_comparison_falsify( }; let value_predicate = dynamic_with_options( - DynamicComparisonExpr { - operator, - rhs: Arc::clone(&dynamic.rhs), - default: !dynamic.default, - }, + dynamic.with_operator(operator, !dynamic.default()), lhs_stat, ); with_non_nan_guards::

([lhs], value_predicate) @@ -847,52 +841,52 @@ mod tests { use std::sync::atomic::AtomicUsize; use std::sync::atomic::Ordering; + use vortex_array::aggregate_fn::AggregateFnRef; + use vortex_array::aggregate_fn::AggregateFnVTableExt; + use vortex_array::aggregate_fn::EmptyOptions as AggregateEmptyOptions; + use vortex_array::aggregate_fn::fns::all_non_nan::AllNonNan; + use vortex_array::dtype::DType; + use vortex_array::dtype::Nullability; + use vortex_array::dtype::PType; + use vortex_array::dtype::StructFields; + use vortex_array::expr::BoundExpression; + use vortex_array::expr::Expression; + use vortex_array::expr::and; + use vortex_array::expr::between; + use vortex_array::expr::cast; + use vortex_array::expr::col; + use vortex_array::expr::dynamic; + use vortex_array::expr::eq; + use vortex_array::expr::get_item; + use vortex_array::expr::gt; + use vortex_array::expr::gt_eq; + use vortex_array::expr::is_nan; + use vortex_array::expr::is_not_null; + use vortex_array::expr::is_null; + use vortex_array::expr::like; + use vortex_array::expr::list_contains; + use vortex_array::expr::lit; + use vortex_array::expr::lt; + use vortex_array::expr::lt_eq; + use vortex_array::expr::or; + use vortex_array::expr::stats::Stat; + use vortex_array::scalar::Scalar; + use vortex_array::scalar_fn::EmptyOptions; + use vortex_array::scalar_fn::ScalarFnId; + use vortex_array::scalar_fn::ScalarFnVTable; + use vortex_array::scalar_fn::ScalarFnVTableExt; + use vortex_array::scalar_fn::fns::between::BetweenOptions; + use vortex_array::scalar_fn::fns::between::StrictComparison; + use vortex_array::scalar_fn::fns::binary::Binary; + use vortex_array::scalar_fn::fns::dynamic::DynamicComparison; + use vortex_array::scalar_fn::fns::operators::CompareOperator; + use vortex_array::scalar_fn::internal::row_count::RowCount; use vortex_error::VortexResult; use vortex_session::VortexSession; - use crate::aggregate_fn::AggregateFnRef; - use crate::aggregate_fn::AggregateFnVTableExt; - use crate::aggregate_fn::EmptyOptions as AggregateEmptyOptions; - use crate::aggregate_fn::fns::all_non_nan::AllNonNan; - use crate::dtype::DType; - use crate::dtype::Nullability; - use crate::dtype::PType; - use crate::dtype::StructFields; - use crate::expr::BoundExpression; - use crate::expr::Expression; - use crate::expr::and; - use crate::expr::between; - use crate::expr::cast; - use crate::expr::col; - use crate::expr::dynamic; - use crate::expr::eq; - use crate::expr::get_item; - use crate::expr::gt; - use crate::expr::gt_eq; - use crate::expr::is_nan; - use crate::expr::is_not_null; - use crate::expr::is_null; - use crate::expr::like; - use crate::expr::list_contains; - use crate::expr::lit; - use crate::expr::lt; - use crate::expr::lt_eq; - use crate::expr::or; - use crate::expr::stats::Stat; - use crate::scalar::Scalar; - use crate::scalar_fn::EmptyOptions; - use crate::scalar_fn::ScalarFnId; - use crate::scalar_fn::ScalarFnVTable; - use crate::scalar_fn::ScalarFnVTableExt; - use crate::scalar_fn::fns::between::BetweenOptions; - use crate::scalar_fn::fns::between::StrictComparison; - use crate::scalar_fn::fns::binary::Binary; - use crate::scalar_fn::fns::dynamic::DynamicComparison; - use crate::scalar_fn::fns::dynamic::DynamicComparisonExpr; - use crate::scalar_fn::fns::operators::CompareOperator; - use crate::scalar_fn::internal::row_count::RowCount; use crate::stats::expr::StatFn; use crate::stats::expr::StatOptions; + use crate::stats::rewrite::BoundExpressionPruneExt; use crate::stats::rewrite::StatsRewriteRule; use crate::stats::session::StatsSessionExt; @@ -1304,11 +1298,7 @@ mod tests { assert_rewrite_eq!( falsify(&expr)?, Some(DynamicComparison.new_expr( - DynamicComparisonExpr { - operator: CompareOperator::Lte, - rhs: Arc::clone(&dynamic.rhs), - default: false, - }, + dynamic.with_operator(CompareOperator::Lte, false), [stat(col("a"), Stat::Max)], )) ); diff --git a/vortex-expr/src/stats/rewrite/fn_tests.rs b/vortex-expr/src/stats/rewrite/fn_tests.rs new file mode 100644 index 00000000000..a83a0f20ae7 --- /dev/null +++ b/vortex-expr/src/stats/rewrite/fn_tests.rs @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +//! Falsification tests for individual built-in scalar functions. + +use std::sync::Arc; +use std::sync::LazyLock; + +use vortex_array::dtype::DType; +use vortex_array::dtype::Nullability; +use vortex_array::dtype::PType::I32; +use vortex_array::dtype::StructFields; +use vortex_array::expr::Expression; +use vortex_array::expr::and; +use vortex_array::expr::col; +use vortex_array::expr::eq; +use vortex_array::expr::gt; +use vortex_array::expr::is_not_null; +use vortex_array::expr::is_null; +use vortex_array::expr::list_contains; +use vortex_array::expr::lit; +use vortex_array::expr::lt; +use vortex_array::expr::or; +use vortex_array::expr::stats::Stat; +use vortex_array::expr::test_harness; +use vortex_array::scalar::Scalar; +use vortex_array::scalar_fn::EmptyOptions; +use vortex_array::scalar_fn::ScalarFnVTableExt; +use vortex_array::scalar_fn::internal::row_count::RowCount; +use vortex_error::VortexResult; +use vortex_session::VortexSession; + +use crate::stats::StatsSession; +use crate::stats::all_non_null; +use crate::stats::all_null; +use crate::stats::null_count; +use crate::stats::rewrite::BoundExpressionPruneExt; +use crate::stats::stat as stat_expr; + +static STATS_SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); + +fn stat(expr: Expression, stat: Stat) -> Expression { + stat_expr(expr, stat.aggregate_fn().unwrap()) +} + +#[test] +fn test_is_null_falsification() -> VortexResult<()> { + let expr = is_null(col("a")); + let dtype = test_harness::struct_dtype(); + + assert_eq!( + expr.bind(&dtype)?.falsify(&STATS_SESSION)?, + Some(or(eq(null_count(col("a")), lit(0u64)), all_non_null(col("a")),).bind(&dtype)?) + ); + Ok(()) +} + +#[test] +fn test_is_not_null_falsification() -> VortexResult<()> { + let expr = is_not_null(col("a")); + let dtype = test_harness::struct_dtype(); + + assert_eq!( + expr.bind(&dtype)?.falsify(&STATS_SESSION)?, + Some( + or( + eq(null_count(col("a")), RowCount.new_expr(EmptyOptions, []),), + all_null(col("a")), + ) + .bind(&dtype)? + ) + ); + Ok(()) +} + +#[test] +pub fn list_falsification() -> VortexResult<()> { + let expr = list_contains( + lit(Scalar::list( + Arc::new(DType::Primitive(I32, Nullability::NonNullable)), + vec![1.into(), 2.into(), 3.into()], + Nullability::NonNullable, + )), + col("a"), + ); + let scope = DType::Struct( + StructFields::new( + ["a"].into(), + vec![DType::Primitive(I32, Nullability::NonNullable)], + ), + Nullability::NonNullable, + ); + + assert_eq!( + expr.bind(&scope)?.falsify(&STATS_SESSION)?, + Some( + and( + and( + or( + lt(stat(col("a"), Stat::Max), lit(1i32)), + gt(stat(col("a"), Stat::Min), lit(1i32)), + ), + or( + lt(stat(col("a"), Stat::Max), lit(2i32)), + gt(stat(col("a"), Stat::Min), lit(2i32)), + ) + ), + or( + lt(stat(col("a"), Stat::Max), lit(3i32)), + gt(stat(col("a"), Stat::Min), lit(3i32)), + ) + ) + .bind(&scope)? + ) + ); + Ok(()) +} diff --git a/vortex-expr/src/stats/rewrite/like_variant.rs b/vortex-expr/src/stats/rewrite/like_variant.rs new file mode 100644 index 00000000000..0f52948aa44 --- /dev/null +++ b/vortex-expr/src/stats/rewrite/like_variant.rs @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +use std::borrow::Cow; + +/// Variants of the LIKE filter that we know how to turn into a stats pruning predicate. +#[derive(Debug, PartialEq)] +pub(crate) enum LikeVariant<'a> { + Exact(Cow<'a, str>), + Prefix(Cow<'a, str>), +} + +impl<'a> LikeVariant<'a> { + /// Parse a LIKE pattern string into its relevant variant + pub(crate) fn from_str(string: &'a str) -> Option> { + let mut literal = None; + let mut chars = string.char_indices(); + + while let Some((idx, c)) = chars.next() { + match c { + '\\' => { + let literal = literal.get_or_insert_with(|| string[..idx].to_string()); + match chars.next() { + Some((_, escaped)) => literal.push(escaped), + None => literal.push('\\'), + } + } + '%' | '_' => { + return match literal { + Some(literal) => (!literal.is_empty()) + .then_some(LikeVariant::Prefix(Cow::Owned(literal))), + None => { + (idx != 0).then_some(LikeVariant::Prefix(Cow::Borrowed(&string[..idx]))) + } + }; + } + c => { + if let Some(literal) = &mut literal { + literal.push(c); + } + } + } + } + + Some(match literal { + Some(literal) => LikeVariant::Exact(Cow::Owned(literal)), + None => LikeVariant::Exact(Cow::Borrowed(string)), + }) + } +} + +#[cfg(test)] +mod tests { + use std::borrow::Cow; + + use super::LikeVariant; + + fn assert_borrowed_exact(pattern: &str, expected: &str) { + let Some(LikeVariant::Exact(actual)) = LikeVariant::from_str(pattern) else { + panic!("expected borrowed exact pattern"); + }; + assert!(matches!(actual, Cow::Borrowed(_))); + assert_eq!(actual.as_ref(), expected); + } + + fn assert_owned_exact(pattern: &str, expected: &str) { + let Some(LikeVariant::Exact(actual)) = LikeVariant::from_str(pattern) else { + panic!("expected owned exact pattern"); + }; + assert!(matches!(actual, Cow::Owned(_))); + assert_eq!(actual.as_ref(), expected); + } + + fn assert_borrowed_prefix(pattern: &str, expected: &str) { + let Some(LikeVariant::Prefix(actual)) = LikeVariant::from_str(pattern) else { + panic!("expected borrowed prefix pattern"); + }; + assert!(matches!(actual, Cow::Borrowed(_))); + assert_eq!(actual.as_ref(), expected); + } + + fn assert_owned_prefix(pattern: &str, expected: &str) { + let Some(LikeVariant::Prefix(actual)) = LikeVariant::from_str(pattern) else { + panic!("expected owned prefix pattern"); + }; + assert!(matches!(actual, Cow::Owned(_))); + assert_eq!(actual.as_ref(), expected); + } + + #[test] + fn test_like_variant_borrowed_patterns() { + assert_borrowed_exact("simple", "simple"); + assert_borrowed_prefix("prefix%", "prefix"); + assert_borrowed_prefix("first%rest_stuff", "first"); + } + + #[test] + fn test_like_variant_escaped_patterns() { + assert_owned_prefix(r"\%%", "%"); + assert_owned_prefix(r"\_%", "_"); + assert_owned_prefix(r"\\%", "\\"); + assert_owned_exact(r"\%", "%"); + assert_owned_exact("trailing\\", "trailing\\"); + } + + #[test] + fn test_like_variant_unsupported_patterns() { + assert_eq!(LikeVariant::from_str("%suffix"), None); + assert_eq!(LikeVariant::from_str(r"%\%%"), None); + assert_eq!(LikeVariant::from_str("_pattern"), None); + } +} diff --git a/vortex-array/src/stats/session.rs b/vortex-expr/src/stats/session.rs similarity index 98% rename from vortex-array/src/stats/session.rs rename to vortex-expr/src/stats/session.rs index 588a99ec372..edc5de15c08 100644 --- a/vortex-array/src/stats/session.rs +++ b/vortex-expr/src/stats/session.rs @@ -7,12 +7,12 @@ use std::any::Any; use std::sync::Arc; use parking_lot::RwLock; +use vortex_array::scalar_fn::ScalarFnId; use vortex_session::SessionExt; use vortex_session::SessionGuard; use vortex_session::SessionVar; use vortex_utils::aliases::hash_map::HashMap; -use crate::scalar_fn::ScalarFnId; use crate::stats::rewrite::StatsRewriteRule; use crate::stats::rewrite::StatsRewriteRuleRef; use crate::stats::rewrite::register_builtins; diff --git a/vortex-array/src/expr/transform/bound_partition.rs b/vortex-expr/src/transform/bound_partition.rs similarity index 92% rename from vortex-array/src/expr/transform/bound_partition.rs rename to vortex-expr/src/transform/bound_partition.rs index 420e1eb3ba3..88ef5287062 100644 --- a/vortex-array/src/expr/transform/bound_partition.rs +++ b/vortex-expr/src/transform/bound_partition.rs @@ -6,28 +6,28 @@ use std::fmt::Formatter; use std::hash::Hash; use itertools::Itertools; +use vortex_array::dtype::DType; +use vortex_array::dtype::FieldName; +use vortex_array::dtype::FieldNames; +use vortex_array::dtype::Nullability; +use vortex_array::dtype::StructFields; +use vortex_array::expr::BoundExpression; +use vortex_array::expr::ExactBoundExpr; +use vortex_array::expr::bound::get_item; +use vortex_array::expr::bound::pack; +use vortex_array::expr::traversal::NodeExt; +use vortex_array::expr::traversal::NodeRewriter; +use vortex_array::expr::traversal::Transformed; +use vortex_array::expr::traversal::TraversalOrder; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure_eq; use vortex_utils::aliases::hash_map::HashMap; -use crate::dtype::DType; -use crate::dtype::FieldName; -use crate::dtype::FieldNames; -use crate::dtype::Nullability; -use crate::dtype::StructFields; -use crate::expr::BoundExpression; -use crate::expr::ExactBoundExpr; -use crate::expr::analysis::Annotation; -use crate::expr::analysis::AnnotationFn; -use crate::expr::analysis::BoundAnnotations; -use crate::expr::analysis::descendent_bound_annotations; -use crate::expr::bound::get_item; -use crate::expr::bound::pack; -use crate::expr::traversal::NodeExt; -use crate::expr::traversal::NodeRewriter; -use crate::expr::traversal::Transformed; -use crate::expr::traversal::TraversalOrder; +use crate::analysis::Annotation; +use crate::analysis::AnnotationFn; +use crate::analysis::BoundAnnotations; +use crate::analysis::descendent_bound_annotations; /// Partition an expression into sub-expressions that are uniquely associated with an annotation. /// A root expression is also returned that can be used to recombine the results of the partitions @@ -290,21 +290,21 @@ fn replace_root_dtype(expr: BoundExpression, root_dtype: DType) -> VortexResult< mod tests { use rstest::fixture; use rstest::rstest; + use vortex_array::dtype::DType; + use vortex_array::dtype::Nullability::NonNullable; + use vortex_array::dtype::Nullability::Nullable; + use vortex_array::dtype::PType::I32; + use vortex_array::dtype::StructFields; + use vortex_array::expr::checked_add; + use vortex_array::expr::col; + use vortex_array::expr::get_item; + use vortex_array::expr::lit; + use vortex_array::expr::merge; + use vortex_array::expr::pack; + use vortex_array::expr::root; use super::*; - use crate::dtype::DType; - use crate::dtype::Nullability::NonNullable; - use crate::dtype::Nullability::Nullable; - use crate::dtype::PType::I32; - use crate::dtype::StructFields; - use crate::expr::analysis::make_bound_free_field_annotator; - use crate::expr::checked_add; - use crate::expr::col; - use crate::expr::get_item; - use crate::expr::lit; - use crate::expr::merge; - use crate::expr::pack; - use crate::expr::root; + use crate::analysis::make_bound_free_field_annotator; #[fixture] fn dtype() -> DType { diff --git a/vortex-array/src/expr/transform/match_between.rs b/vortex-expr/src/transform/match_between.rs similarity index 90% rename from vortex-array/src/expr/transform/match_between.rs rename to vortex-expr/src/transform/match_between.rs index cd506807e46..71a5f2b6c30 100644 --- a/vortex-array/src/expr/transform/match_between.rs +++ b/vortex-expr/src/transform/match_between.rs @@ -5,19 +5,18 @@ use std::ptr; +use vortex_array::expr::BoundExpression; +use vortex_array::scalar_fn::ScalarFnVTableExt; +use vortex_array::scalar_fn::fns::between::Between; +use vortex_array::scalar_fn::fns::between::BetweenOptions; +use vortex_array::scalar_fn::fns::between::StrictComparison; +use vortex_array::scalar_fn::fns::binary::Binary; +use vortex_array::scalar_fn::fns::get_item::GetItem; +use vortex_array::scalar_fn::fns::literal::Literal; +use vortex_array::scalar_fn::fns::operators::Operator; use vortex_error::VortexExpect; use vortex_error::VortexResult; -use crate::expr::BoundExpression; -use crate::scalar_fn::ScalarFnVTableExt; -use crate::scalar_fn::fns::between::Between; -use crate::scalar_fn::fns::between::BetweenOptions; -use crate::scalar_fn::fns::between::StrictComparison; -use crate::scalar_fn::fns::binary::Binary; -use crate::scalar_fn::fns::get_item::GetItem; -use crate::scalar_fn::fns::literal::Literal; -use crate::scalar_fn::fns::operators::Operator; - /// Merge pairs of range comparisons on the same column within any conjunction of `expr` into a /// single [`Between`]. /// @@ -219,32 +218,32 @@ mod tests { use std::sync::LazyLock; use rstest::rstest; + use vortex_array::IntoArray; + use vortex_array::VortexSessionExecute; + use vortex_array::arrays::BoolArray; + use vortex_array::arrays::StructArray; + use vortex_array::dtype::DType; + use vortex_array::dtype::Nullability; + use vortex_array::dtype::PType; + use vortex_array::dtype::StructFields; + use vortex_array::expr::Expression; + use vortex_array::expr::and; + use vortex_array::expr::between; + use vortex_array::expr::col; + use vortex_array::expr::gt; + use vortex_array::expr::gt_eq; + use vortex_array::expr::lit; + use vortex_array::expr::lt; + use vortex_array::expr::lt_eq; + use vortex_array::expr::or; + use vortex_array::scalar::Scalar; + use vortex_array::scalar_fn::fns::between::BetweenOptions; + use vortex_array::scalar_fn::fns::between::StrictComparison; use vortex_buffer::buffer; use vortex_error::VortexResult; use vortex_session::VortexSession; use super::find_between; - use crate::IntoArray; - use crate::VortexSessionExecute; - use crate::arrays::BoolArray; - use crate::arrays::StructArray; - use crate::dtype::DType; - use crate::dtype::Nullability; - use crate::dtype::PType; - use crate::dtype::StructFields; - use crate::expr::Expression; - use crate::expr::and; - use crate::expr::between; - use crate::expr::col; - use crate::expr::gt; - use crate::expr::gt_eq; - use crate::expr::lit; - use crate::expr::lt; - use crate::expr::lt_eq; - use crate::expr::or; - use crate::scalar::Scalar; - use crate::scalar_fn::fns::between::BetweenOptions; - use crate::scalar_fn::fns::between::StrictComparison; static SESSION: LazyLock = LazyLock::new(VortexSession::empty); diff --git a/vortex-array/src/expr/transform/mod.rs b/vortex-expr/src/transform/mod.rs similarity index 62% rename from vortex-array/src/expr/transform/mod.rs rename to vortex-expr/src/transform/mod.rs index bcad501feef..2043ebdebf2 100644 --- a/vortex-array/src/expr/transform/mod.rs +++ b/vortex-expr/src/transform/mod.rs @@ -1,7 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -//! Transformations for [`crate::expr::Expression`] and [`crate::expr::BoundExpression`] trees. +//! Transformations for [`Expression`](vortex_array::expr::Expression) and +//! [`BoundExpression`](vortex_array::expr::BoundExpression) trees. mod bound_partition; mod match_between; mod replace; diff --git a/vortex-array/src/expr/transform/replace.rs b/vortex-expr/src/transform/replace.rs similarity index 81% rename from vortex-array/src/expr/transform/replace.rs rename to vortex-expr/src/transform/replace.rs index d5eb422c26f..a990b601d0f 100644 --- a/vortex-array/src/expr/transform/replace.rs +++ b/vortex-expr/src/transform/replace.rs @@ -1,13 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::expr::Expression; +use vortex_array::expr::traversal::NodeExt; +use vortex_array::expr::traversal::Transformed; +use vortex_array::expr::traversal::TraversalOrder; use vortex_error::VortexExpect; -use crate::expr::Expression; -use crate::expr::traversal::NodeExt; -use crate::expr::traversal::Transformed; -use crate::expr::traversal::TraversalOrder; - /// Replaces all occurrences of `needle` in the expression `expr` with `replacement`. pub fn replace(expr: Expression, needle: &Expression, replacement: Expression) -> Expression { expr.transform_down(|node| { @@ -28,11 +27,12 @@ pub fn replace(expr: Expression, needle: &Expression, replacement: Expression) - #[cfg(test)] mod test { + use vortex_array::dtype::Nullability::NonNullable; + use vortex_array::expr::get_item; + use vortex_array::expr::lit; + use vortex_array::expr::pack; + use super::replace; - use crate::dtype::Nullability::NonNullable; - use crate::expr::get_item; - use crate::expr::lit; - use crate::expr::pack; #[test] fn test_replace_full_tree() { diff --git a/vortex-file/Cargo.toml b/vortex-file/Cargo.toml index b70809e4617..5d3dc2c346b 100644 --- a/vortex-file/Cargo.toml +++ b/vortex-file/Cargo.toml @@ -38,6 +38,7 @@ vortex-datetime-parts = { workspace = true } vortex-decimal-byte-parts = { workspace = true } vortex-edition = { workspace = true } vortex-error = { workspace = true } +vortex-expr = { workspace = true } vortex-fastlanes = { workspace = true } vortex-fsst = { workspace = true } vortex-io = { workspace = true } diff --git a/vortex-file/benches/split_collection.rs b/vortex-file/benches/split_collection.rs index ca95db237af..71625624e60 100644 --- a/vortex-file/benches/split_collection.rs +++ b/vortex-file/benches/split_collection.rs @@ -28,7 +28,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_btrblocks::BtrBlocksCompressorBuilder; use vortex_buffer::Buffer; use vortex_buffer::ByteBufferMut; @@ -75,7 +74,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() .with::() .with_tokio(); diff --git a/vortex-file/src/pruning.rs b/vortex-file/src/pruning.rs index df327638d00..dd68b78bc0e 100644 --- a/vortex-file/src/pruning.rs +++ b/vortex-file/src/pruning.rs @@ -18,9 +18,10 @@ use vortex_array::scalar_fn::fns::cast::Cast; use vortex_array::scalar_fn::fns::get_item::GetItem; use vortex_array::scalar_fn::fns::literal::Literal; use vortex_array::scalar_fn::internal::row_count::substitute_row_count; -use vortex_array::stats::bind::StatBinder; -use vortex_array::stats::bind::bind_stats; use vortex_error::VortexResult; +use vortex_expr::stats::bind::StatBinder; +use vortex_expr::stats::bind::bind_stats; +use vortex_expr::stats::rewrite::BoundExpressionPruneExt; use vortex_session::VortexSession; use crate::FileStatistics; diff --git a/vortex-layout/Cargo.toml b/vortex-layout/Cargo.toml index 32322fc3c6a..81cd54e9a38 100644 --- a/vortex-layout/Cargo.toml +++ b/vortex-layout/Cargo.toml @@ -47,6 +47,7 @@ vortex-arrow = { workspace = true } vortex-btrblocks = { workspace = true } vortex-buffer = { workspace = true } vortex-error = { workspace = true } +vortex-expr = { workspace = true } vortex-io = { workspace = true } vortex-mask = { workspace = true } vortex-metrics = { workspace = true } diff --git a/vortex-layout/benches/aggregate_partial_merge.rs b/vortex-layout/benches/aggregate_partial_merge.rs index e6c8e46e468..fe54480829b 100644 --- a/vortex-layout/benches/aggregate_partial_merge.rs +++ b/vortex-layout/benches/aggregate_partial_merge.rs @@ -41,7 +41,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_layout::layouts::zoned::aggregates::bloom_filter::BloomFilter; @@ -65,7 +64,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); /// Zones merged per iteration. diff --git a/vortex-layout/benches/pipeline_scan.rs b/vortex-layout/benches/pipeline_scan.rs index 28370507291..3a371199c80 100644 --- a/vortex-layout/benches/pipeline_scan.rs +++ b/vortex-layout/benches/pipeline_scan.rs @@ -23,7 +23,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::serde::SerializeOptions; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_buffer::Alignment; use vortex_buffer::ByteBufferMut; use vortex_layout::plan::physical::PackPlan; @@ -45,7 +44,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-layout/benches/zone_map_prune.rs b/vortex-layout/benches/zone_map_prune.rs index d76be3aedc8..565866825c0 100644 --- a/vortex-layout/benches/zone_map_prune.rs +++ b/vortex-layout/benches/zone_map_prune.rs @@ -43,9 +43,9 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; +use vortex_expr::stats::rewrite::BoundExpressionPruneExt; use vortex_layout::layouts::zoned::zone_map::ZoneMap; use vortex_layout::session::LayoutSession; use vortex_session::VortexSession; @@ -67,7 +67,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() .with::() }); diff --git a/vortex-layout/src/layouts/dict/reader.rs b/vortex-layout/src/layouts/dict/reader.rs index 90abc317c7d..0beab32f938 100644 --- a/vortex-layout/src/layouts/dict/reader.rs +++ b/vortex-layout/src/layouts/dict/reader.rs @@ -22,15 +22,15 @@ use vortex_array::dtype::Nullability; use vortex_array::expr::BoundExpression; use vortex_array::expr::ExactBoundExpr; use vortex_array::expr::bound::pack as bound_pack; -use vortex_array::expr::direct_bound_annotations; -use vortex_array::expr::label_bound_tree; use vortex_array::expr::root; -use vortex_array::expr::transform::partition_bound_annotations; use vortex_array::optimizer::ArrayOptimizer; use vortex_array::scalar_fn::is_negative_cost; use vortex_error::VortexError; use vortex_error::VortexExpect; use vortex_error::VortexResult; +use vortex_expr::direct_bound_annotations; +use vortex_expr::label_bound_tree; +use vortex_expr::transform::partition_bound_annotations; use vortex_mask::Mask; use vortex_session::VortexSession; use vortex_utils::aliases::dash_map::DashMap; diff --git a/vortex-layout/src/layouts/partitioned.rs b/vortex-layout/src/layouts/partitioned.rs index d9d99722f0b..ee1e675b149 100644 --- a/vortex-layout/src/layouts/partitioned.rs +++ b/vortex-layout/src/layouts/partitioned.rs @@ -15,10 +15,10 @@ use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::expr::BoundExpression; -use vortex_array::expr::transform::BoundPartitionedExpr; use vortex_array::validity::Validity; use vortex_error::VortexError; use vortex_error::VortexResult; +use vortex_expr::transform::BoundPartitionedExpr; use vortex_mask::Mask; use vortex_session::VortexSession; diff --git a/vortex-layout/src/layouts/row_idx/mod.rs b/vortex-layout/src/layouts/row_idx/mod.rs index e02b3659b73..f9641cbd6cb 100644 --- a/vortex-layout/src/layouts/row_idx/mod.rs +++ b/vortex-layout/src/layouts/row_idx/mod.rs @@ -26,14 +26,14 @@ use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::expr::BoundExpression; use vortex_array::expr::ExactBoundExpr; -use vortex_array::expr::transform::BoundPartitionedExpr; -use vortex_array::expr::transform::partition_bound; use vortex_array::expr::traversal::NodeExt; use vortex_array::expr::traversal::Transformed; use vortex_array::expr::traversal::TraversalOrder; use vortex_array::scalar::PValue; use vortex_error::VortexExpect; use vortex_error::VortexResult; +use vortex_expr::transform::BoundPartitionedExpr; +use vortex_expr::transform::partition_bound; use vortex_mask::Mask; use vortex_sequence::Sequence; use vortex_sequence::SequenceArray; diff --git a/vortex-layout/src/layouts/struct_/reader.rs b/vortex-layout/src/layouts/struct_/reader.rs index 7af98921eec..9d9630473c8 100644 --- a/vortex-layout/src/layouts/struct_/reader.rs +++ b/vortex-layout/src/layouts/struct_/reader.rs @@ -21,15 +21,11 @@ use vortex_array::dtype::RESERVED_VALIDITY_FIELD_NAME; use vortex_array::dtype::StructFields; use vortex_array::expr::BoundExpression; use vortex_array::expr::ExactBoundExpr; -use vortex_array::expr::analysis::AnnotationFn; use vortex_array::expr::bound::get_item; use vortex_array::expr::bound::is_not_null; use vortex_array::expr::bound::mask; use vortex_array::expr::bound::not; use vortex_array::expr::bound::pack; -use vortex_array::expr::make_bound_free_field_annotator; -use vortex_array::expr::transform::BoundPartitionedExpr; -use vortex_array::expr::transform::partition_bound; use vortex_array::expr::traversal::NodeExt; use vortex_array::expr::traversal::Transformed; use vortex_array::expr::traversal::TraversalOrder; @@ -45,6 +41,10 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_err; +use vortex_expr::analysis::AnnotationFn; +use vortex_expr::make_bound_free_field_annotator; +use vortex_expr::transform::BoundPartitionedExpr; +use vortex_expr::transform::partition_bound; use vortex_mask::Mask; use vortex_session::VortexSession; use vortex_utils::aliases::dash_map::DashMap; diff --git a/vortex-layout/src/layouts/zoned/aggregates/bloom_filter/scalar_fn.rs b/vortex-layout/src/layouts/zoned/aggregates/bloom_filter/scalar_fn.rs index 7896ba411c5..fc8f91627cb 100644 --- a/vortex-layout/src/layouts/zoned/aggregates/bloom_filter/scalar_fn.rs +++ b/vortex-layout/src/layouts/zoned/aggregates/bloom_filter/scalar_fn.rs @@ -35,8 +35,6 @@ use vortex_array::scalar_fn::ScalarFnVTableExt; use vortex_array::scalar_fn::fns::binary::Binary; use vortex_array::scalar_fn::fns::literal::Literal; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::stats::expr::bound::stat as bound_stat; -use vortex_array::stats::rewrite::StatsRewriteRule; use vortex_buffer::BitBufferMut; use vortex_buffer::Buffer; use vortex_error::VortexExpect; @@ -44,6 +42,8 @@ use vortex_error::VortexResult; use vortex_error::vortex_ensure; use vortex_error::vortex_ensure_eq; use vortex_error::vortex_err; +use vortex_expr::stats::expr::bound::stat as bound_stat; +use vortex_expr::stats::rewrite::StatsRewriteRule; use vortex_session::VortexSession; use vortex_session::registry::CachedId; @@ -305,10 +305,11 @@ mod tests { use vortex_array::scalar_fn::ScalarFnVTableExt; use vortex_array::scalar_fn::VecExecutionArgs; use vortex_array::scalar_fn::session::ScalarFnSessionExt; - use vortex_array::stats::StatsSessionExt; - use vortex_array::stats::rewrite::StatsRewriteRule; use vortex_array::validity::Validity; use vortex_error::VortexResult; + use vortex_expr::stats::StatsSessionExt; + use vortex_expr::stats::rewrite::BoundExpressionPruneExt; + use vortex_expr::stats::rewrite::StatsRewriteRule; use vortex_session::VortexSession; use super::BloomContains; diff --git a/vortex-layout/src/layouts/zoned/pruning.rs b/vortex-layout/src/layouts/zoned/pruning.rs index 0546c0106c1..6e39823689e 100644 --- a/vortex-layout/src/layouts/zoned/pruning.rs +++ b/vortex-layout/src/layouts/zoned/pruning.rs @@ -25,6 +25,7 @@ use vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates; use vortex_error::SharedVortexResult; use vortex_error::VortexExpect; use vortex_error::VortexResult; +use vortex_expr::stats::rewrite::BoundExpressionPruneExt; use vortex_mask::Mask; use vortex_session::VortexSession; use vortex_utils::aliases::dash_map::DashMap; diff --git a/vortex-layout/src/layouts/zoned/zone_map.rs b/vortex-layout/src/layouts/zoned/zone_map.rs index dfdb421814b..2b9011e330c 100644 --- a/vortex-layout/src/layouts/zoned/zone_map.rs +++ b/vortex-layout/src/layouts/zoned/zone_map.rs @@ -36,13 +36,13 @@ use vortex_array::scalar_fn::ScalarFnVTableExt; use vortex_array::scalar_fn::internal::row_count::RowCount; use vortex_array::scalar_fn::internal::row_count::contains_row_count; use vortex_array::scalar_fn::internal::row_count::substitute_row_count; -use vortex_array::stats::bind::StatBinder; -use vortex_array::stats::bind::bind_stats; use vortex_array::validity::Validity; use vortex_buffer::buffer; use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure_eq; +use vortex_expr::stats::bind::StatBinder; +use vortex_expr::stats::bind::bind_stats; use vortex_mask::Mask; use vortex_runend::RunEnd; use vortex_session::VortexSession; @@ -131,7 +131,7 @@ impl ZoneMap { /// Apply a pruning predicate to this zone map. /// /// `predicate` should be a stats rewrite expression such as the result of - /// [`BoundExpression::falsify`]. The returned mask has one value per zone, where + /// [`BoundExpressionPruneExt::falsify`]. The returned mask has one value per zone, where /// `true` means the zone cannot contain matching rows and can be skipped. /// /// If the predicate contains [`row_count`][vortex_array::scalar_fn::internal::row_count] @@ -141,6 +141,8 @@ impl ZoneMap { /// `row_count` is a layout property rather than a stored stats field, and the /// final zone may be shorter than the nominal zone length, so it is materialized /// only after the predicate has been lowered to the zone-map table. + /// + /// [`BoundExpressionPruneExt::falsify`]: vortex_expr::stats::rewrite::BoundExpressionPruneExt::falsify pub fn prune( &self, predicate: &BoundExpression, @@ -436,14 +438,15 @@ mod tests { use vortex_array::expr::stats::Stat; use vortex_array::scalar::ScalarValue; use vortex_array::scalar_fn::fns::operators::CompareOperator; - use vortex_array::stats::all_nan; - use vortex_array::stats::all_non_nan; - use vortex_array::stats::all_non_null; - use vortex_array::stats::all_null; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_buffer::buffer; use vortex_error::VortexResult; + use vortex_expr::stats::all_nan; + use vortex_expr::stats::all_non_nan; + use vortex_expr::stats::all_non_null; + use vortex_expr::stats::all_null; + use vortex_expr::stats::rewrite::BoundExpressionPruneExt; use vortex_mask::Mask; use crate::layouts::zoned::zone_map::ZoneMap; @@ -985,7 +988,7 @@ mod tests { let max_fn = Stat::Max .aggregate_fn() .expect("max should have an aggregate function"); - let predicate = is_null(vortex_array::stats::stat(root(), max_fn)); + let predicate = is_null(vortex_expr::stats::stat(root(), max_fn)); // Missing StatFn lowers to a nullable null literal, so `is_null(...)` is true for every zone. let mask = prune(&zone_map, &predicate).unwrap(); @@ -1010,7 +1013,7 @@ mod tests { let max_fn = Stat::Max .aggregate_fn() .expect("max should have an aggregate function"); - let predicate = is_null(vortex_array::stats::stat(root(), max_fn)); + let predicate = is_null(vortex_expr::stats::stat(root(), max_fn)); let error = prune(&zone_map, &predicate).unwrap_err(); assert!( diff --git a/vortex-layout/src/plan/physical/plans/pack.rs b/vortex-layout/src/plan/physical/plans/pack.rs index 3ead88f8892..b37f50934e8 100644 --- a/vortex-layout/src/plan/physical/plans/pack.rs +++ b/vortex-layout/src/plan/physical/plans/pack.rs @@ -12,9 +12,6 @@ use vortex_array::dtype::Nullability; use vortex_array::dtype::StructFields; use vortex_array::expr::BoundExpression; use vortex_array::expr::ExactBoundExpr; -use vortex_array::expr::descendent_bound_annotations; -use vortex_array::expr::make_bound_free_field_annotator; -use vortex_array::expr::transform::partition_bound; use vortex_array::expr::traversal::NodeExt; use vortex_array::expr::traversal::Transformed; use vortex_array::expr::traversal::TraversalOrder; @@ -28,6 +25,9 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure; use vortex_error::vortex_err; +use vortex_expr::descendent_bound_annotations; +use vortex_expr::make_bound_free_field_annotator; +use vortex_expr::transform::partition_bound; use vortex_mask::Mask; use vortex_session::registry::CachedId; diff --git a/vortex-layout/src/plan/physical/plans/row_idx.rs b/vortex-layout/src/plan/physical/plans/row_idx.rs index c7970ba8a12..5c45d2cae4f 100644 --- a/vortex-layout/src/plan/physical/plans/row_idx.rs +++ b/vortex-layout/src/plan/physical/plans/row_idx.rs @@ -13,7 +13,6 @@ use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::StructFields; use vortex_array::expr::BoundExpression; -use vortex_array::expr::transform::partition_bound; use vortex_array::expr::traversal::NodeExt; use vortex_array::expr::traversal::Transformed; use vortex_array::expr::traversal::TraversalOrder; @@ -22,6 +21,7 @@ use vortex_buffer::Buffer; use vortex_error::VortexResult; use vortex_error::vortex_ensure_eq; use vortex_error::vortex_err; +use vortex_expr::transform::partition_bound; use vortex_mask::Mask; use vortex_session::registry::CachedId; diff --git a/vortex-layout/src/plan/physical/plans/take.rs b/vortex-layout/src/plan/physical/plans/take.rs index acef148774a..b2a1703ff8a 100644 --- a/vortex-layout/src/plan/physical/plans/take.rs +++ b/vortex-layout/src/plan/physical/plans/take.rs @@ -9,12 +9,12 @@ use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::dtype::DType; use vortex_array::expr::BoundExpression; -use vortex_array::expr::BoundLabels; use vortex_array::expr::ExactBoundExpr; -use vortex_array::expr::label_bound_tree; use vortex_array::scalar_fn::fns::dynamic::DynamicComparison; use vortex_array::scalar_fn::is_negative_cost; use vortex_error::VortexResult; +use vortex_expr::BoundLabels; +use vortex_expr::label_bound_tree; use vortex_mask::Mask; use vortex_session::registry::CachedId; diff --git a/vortex-layout/src/plan/physical/tests.rs b/vortex-layout/src/plan/physical/tests.rs index 3828643bdcd..47bad2dd94f 100644 --- a/vortex-layout/src/plan/physical/tests.rs +++ b/vortex-layout/src/plan/physical/tests.rs @@ -37,6 +37,7 @@ use vortex_array::scalar_fn::fns::operators::CompareOperator; use vortex_array::stats::as_stat_bitset_bytes; use vortex_error::VortexResult; use vortex_error::vortex_err; +use vortex_expr::stats::rewrite::BoundExpressionPruneExt; use vortex_mask::Mask; use vortex_session::VortexSession; use vortex_session::registry::CachedId; diff --git a/vortex-layout/src/scan/execution/filter.rs b/vortex-layout/src/scan/execution/filter.rs index 2ce5f588f02..f89acf597c0 100644 --- a/vortex-layout/src/scan/execution/filter.rs +++ b/vortex-layout/src/scan/execution/filter.rs @@ -7,10 +7,11 @@ use bit_vec::BitVec; use vortex_array::VortexSessionExecute; use vortex_array::builtins::ArrayBuiltins; use vortex_array::expr::BoundExpression; -use vortex_array::expr::transform::find_between; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure_eq; +use vortex_expr::stats::rewrite::BoundExpressionPruneExt; +use vortex_expr::transform::find_between; use vortex_io::request::IoConsumer; use vortex_io::request::IoIntent; use vortex_io::request::IoRequest; diff --git a/vortex-layout/src/scan/scan_builder.rs b/vortex-layout/src/scan/scan_builder.rs index f8f803adb94..21dc22c04ca 100644 --- a/vortex-layout/src/scan/scan_builder.rs +++ b/vortex-layout/src/scan/scan_builder.rs @@ -16,14 +16,14 @@ use vortex_array::ArrayRef; use vortex_array::dtype::DType; use vortex_array::dtype::FieldMask; use vortex_array::expr::BoundExpression; -use vortex_array::expr::analysis::referenced_field_paths; -use vortex_array::expr::transform::find_between; use vortex_array::iter::ArrayIterator; use vortex_array::iter::ArrayIteratorAdapter; use vortex_array::stream::ArrayStream; use vortex_array::stream::ArrayStreamAdapter; use vortex_error::VortexExpect; use vortex_error::VortexResult; +use vortex_expr::analysis::referenced_field_paths; +use vortex_expr::transform::find_between; use vortex_io::runtime::BlockingRuntime; use vortex_io::runtime::Task; use vortex_io::session::RuntimeSessionExt; diff --git a/vortex-row/benches/row_encode.rs b/vortex-row/benches/row_encode.rs index 66b69cf16d1..c8cca5140d5 100644 --- a/vortex-row/benches/row_encode.rs +++ b/vortex-row/benches/row_encode.rs @@ -47,7 +47,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_row::RowEncoder; use vortex_session::VortexSession; @@ -67,7 +66,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); fn main() { diff --git a/vortex-spatial/Cargo.toml b/vortex-spatial/Cargo.toml index 687f5b82a96..b48831cf879 100644 --- a/vortex-spatial/Cargo.toml +++ b/vortex-spatial/Cargo.toml @@ -25,6 +25,7 @@ vortex-arrow = { workspace = true } vortex-buffer = { workspace = true } vortex-edition = { workspace = true } vortex-error = { workspace = true } +vortex-expr = { workspace = true } vortex-mask = { workspace = true } vortex-session = { workspace = true } wkb = { workspace = true } diff --git a/vortex-spatial/src/lib.rs b/vortex-spatial/src/lib.rs index 5a7523d3d97..26287e64d39 100644 --- a/vortex-spatial/src/lib.rs +++ b/vortex-spatial/src/lib.rs @@ -8,11 +8,11 @@ use std::sync::Arc; use vortex_array::aggregate_fn::session::AggregateFnSessionExt; use vortex_array::dtype::session::DTypeSessionExt; use vortex_array::scalar_fn::session::ScalarFnSessionExt; -use vortex_array::stats::session::StatsSessionExt; use vortex_arrow::ArrowSessionExt; use vortex_edition::EditionSessionExt; use vortex_error::VortexExpect; use vortex_error::vortex_err; +use vortex_expr::stats::session::StatsSessionExt; use vortex_session::VortexSession; use crate::aggregate_fn::GeometryAabb; diff --git a/vortex-spatial/src/prune/distance.rs b/vortex-spatial/src/prune/distance.rs index 905aeec909d..7417a23d042 100644 --- a/vortex-spatial/src/prune/distance.rs +++ b/vortex-spatial/src/prune/distance.rs @@ -10,8 +10,8 @@ use vortex_array::scalar_fn::ScalarFnVTable; use vortex_array::scalar_fn::fns::binary::Binary; use vortex_array::scalar_fn::fns::literal::Literal; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::stats::rewrite::StatsRewriteRule; use vortex_error::VortexResult; +use vortex_expr::stats::rewrite::StatsRewriteRule; use vortex_session::VortexSession; use super::aabb_stat; @@ -140,8 +140,9 @@ mod tests { use vortex_array::scalar_fn::ScalarFnVTableExt; use vortex_array::scalar_fn::fns::binary::Binary; use vortex_array::scalar_fn::fns::operators::Operator; - use vortex_array::stats::rewrite::StatsRewriteRule; use vortex_error::VortexResult; + use vortex_expr::stats::rewrite::BoundExpressionPruneExt; + use vortex_expr::stats::rewrite::StatsRewriteRule; use super::SpatialDistancePrune; use crate::prune::test_harness::aabb_zone_map; diff --git a/vortex-spatial/src/prune/intersects.rs b/vortex-spatial/src/prune/intersects.rs index e082b995e32..71c1236255f 100644 --- a/vortex-spatial/src/prune/intersects.rs +++ b/vortex-spatial/src/prune/intersects.rs @@ -6,8 +6,8 @@ use vortex_array::expr::BoundExpression; use vortex_array::scalar_fn::ScalarFnId; use vortex_array::scalar_fn::ScalarFnVTable; -use vortex_array::stats::rewrite::StatsRewriteRule; use vortex_error::VortexResult; +use vortex_expr::stats::rewrite::StatsRewriteRule; use vortex_session::VortexSession; use super::aabb_stat; @@ -62,8 +62,9 @@ mod tests { use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::EmptyOptions; use vortex_array::scalar_fn::ScalarFnVTableExt; - use vortex_array::stats::rewrite::StatsRewriteRule; use vortex_error::VortexResult; + use vortex_expr::stats::rewrite::BoundExpressionPruneExt; + use vortex_expr::stats::rewrite::StatsRewriteRule; use super::SpatialIntersectsPrune; use crate::prune::test_harness::aabb_zone_map; diff --git a/vortex-spatial/src/prune/mod.rs b/vortex-spatial/src/prune/mod.rs index 2ce211c16e3..dd1a6951503 100644 --- a/vortex-spatial/src/prune/mod.rs +++ b/vortex-spatial/src/prune/mod.rs @@ -36,8 +36,8 @@ use vortex_array::expr::bound::lt_eq; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::literal::Literal; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::stats::bound::stat; use vortex_error::VortexResult; +use vortex_expr::stats::bound::stat; use vortex_session::VortexSession; use crate::aggregate_fn::GeometryAabb; diff --git a/vortex-tensor/benches/cosine_similarity.rs b/vortex-tensor/benches/cosine_similarity.rs index d701084d684..ac48d4d5fc8 100644 --- a/vortex-tensor/benches/cosine_similarity.rs +++ b/vortex-tensor/benches/cosine_similarity.rs @@ -34,7 +34,6 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -49,7 +48,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Scalar function execution allocates its output inside the timed region, so use the vendored diff --git a/vortex-tensor/benches/inner_product.rs b/vortex-tensor/benches/inner_product.rs index 3b02302cd38..4e8f934fc95 100644 --- a/vortex-tensor/benches/inner_product.rs +++ b/vortex-tensor/benches/inner_product.rs @@ -28,7 +28,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Scalar function execution allocates its output inside the timed region, so use the vendored diff --git a/vortex-tensor/benches/l2_norm.rs b/vortex-tensor/benches/l2_norm.rs index d9f362853d2..0ba995f700c 100644 --- a/vortex-tensor/benches/l2_norm.rs +++ b/vortex-tensor/benches/l2_norm.rs @@ -28,7 +28,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -43,7 +42,6 @@ static SESSION: LazyLock = LazyLock::new(|| { .with::() .with::() .with::() - .with::() }); // Scalar function execution allocates its output inside the timed region, so use the vendored diff --git a/vortex/Cargo.toml b/vortex/Cargo.toml index fb961a63dab..cff73ed08ae 100644 --- a/vortex/Cargo.toml +++ b/vortex/Cargo.toml @@ -30,6 +30,7 @@ vortex-datetime-parts = { workspace = true } vortex-decimal-byte-parts = { workspace = true } vortex-edition = { workspace = true } vortex-error = { workspace = true } +vortex-expr = { workspace = true } vortex-fastlanes = { workspace = true } vortex-file = { workspace = true, optional = true } vortex-fsst = { workspace = true } diff --git a/vortex/src/lib.rs b/vortex/src/lib.rs index 573e929d036..8cc8ee52c1c 100644 --- a/vortex/src/lib.rs +++ b/vortex/src/lib.rs @@ -107,14 +107,24 @@ pub use vortex_array::compute; use vortex_array::dtype::session::DTypeSession; // vortex::expr is in the process of having its dependencies inverted, and will eventually be // pulled back out into a vortex_expr crate. -pub use vortex_array::expr; +pub mod expr { + //! Expression trees, their optimizer, and the analyses and rewrites built on them. + pub use vortex_array::expr::*; + pub use vortex_expr::*; + + /// Statistics, stat expressions, and statistics-based pruning rewrites. + pub mod stats { + pub use vortex_array::expr::stats::*; + pub use vortex_expr::stats::*; + } +} use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; pub use vortex_array::scalar_fn; use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; -use vortex_array::stats::session::StatsSession; use vortex_btrblocks::CompressionSession; +use vortex_expr::stats::session::StatsSession; use vortex_io::session::RuntimeSession; use vortex_layout::session::LayoutSession; use vortex_session::VortexSession; From 27d44ed06b13376efad739bb479d35b0b3eef43f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 17:07:26 +0000 Subject: [PATCH 2/2] Register only the session variables each bench uses Bench statics registered every vortex-array session variable whether the bench used it or not, and the spatial benches and three `vortex` benches started from `spatial_session()` or the full `VortexSession::default()`. Each bench's static now registers exactly the session variables its run creates, found by running every bench once in test mode with an empty session and recording each variable `VortexSession::get` created. `main` still forces the static, so no benchmark iteration creates a session variable. The `vortex` benches register the encodings they exercise rather than every default encoding, layout, runtime and plugin. The CUDA benches keep their chains, since they cannot run without a GPU. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Ps4mp7KF5c4p66aoSoXx5j Signed-off-by: Claude --- encodings/alp/benches/alp_compress.rs | 4 --- .../datetime-parts/benches/split_temporal.rs | 16 ++-------- .../benches/dbp_assemble.rs | 16 ++-------- .../decimal-byte-parts/benches/dbp_split.rs | 16 ++-------- .../fastlanes/benches/bitpack_blocked.rs | 8 +---- .../benches/bitpack_blocked_decompress.rs | 4 --- .../fastlanes/benches/bitpack_compare.rs | 4 --- .../benches/bitpack_compare_sweep.rs | 8 +---- .../fastlanes/benches/bitpacking_filter.rs | 8 +---- .../fastlanes/benches/bitpacking_take.rs | 4 --- .../fastlanes/benches/canonicalize_bench.rs | 4 --- encodings/fastlanes/benches/cast_bitpacked.rs | 4 --- .../fastlanes/benches/compute_between.rs | 4 --- encodings/fastlanes/benches/for_decode.rs | 4 --- encodings/fastlanes/benches/for_encode.rs | 8 +---- .../fsst/benches/chunked_dict_fsst_builder.rs | 6 ---- encodings/fsst/benches/fsst_compress.rs | 6 ---- encodings/fsst/benches/fsst_like.rs | 6 ---- encodings/fsst/benches/fsst_take.rs | 4 --- encodings/fsst/benches/fsst_url_compare.rs | 6 ---- encodings/onpair/benches/decode.rs | 10 +------ encodings/pco/benches/scalar.rs | 8 ----- encodings/runend/benches/run_end_compress.rs | 4 --- encodings/runend/benches/run_end_decode.rs | 8 +---- .../benches/run_end_decode_primitive.rs | 8 +---- .../runend/benches/run_end_null_count.rs | 8 +---- encodings/runend/benches/run_end_sum.rs | 8 +---- encodings/runend/benches/run_end_take.rs | 4 --- encodings/sparse/benches/sparse_canonical.rs | 4 --- encodings/sparse/benches/sparse_pushdown.rs | 4 --- vortex-array/benches/aggregate_grouped.rs | 8 ----- vortex-array/benches/aggregate_max.rs | 8 ----- vortex-array/benches/aggregate_sum.rs | 8 ----- vortex-array/benches/binary_ops.rs | 8 ----- vortex-array/benches/bool_zip.rs | 16 ++-------- vortex-array/benches/cast_decimal.rs | 16 ++-------- vortex-array/benches/cast_primitive.rs | 8 ----- vortex-array/benches/chunk_array_builder.rs | 8 ----- vortex-array/benches/chunked_dict_builder.rs | 8 ----- .../benches/chunked_fsl_canonicalize.rs | 16 ++-------- vortex-array/benches/compare.rs | 8 ----- vortex-array/benches/compare_sorted.rs | 8 ----- vortex-array/benches/dict_compare.rs | 6 ---- vortex-array/benches/dict_compress.rs | 6 ---- vortex-array/benches/dict_mask.rs | 8 ----- .../benches/dict_unreferenced_mask.rs | 16 ++-------- vortex-array/benches/expr/case_when_bench.rs | 8 ----- vortex-array/benches/filter_bool.rs | 16 ++-------- vortex-array/benches/filter_fixed_width.rs | 8 ----- vortex-array/benches/filter_fsl.rs | 8 ----- vortex-array/benches/filter_list.rs | 6 ---- vortex-array/benches/interleave.rs | 8 ----- vortex-array/benches/kleene_bool.rs | 10 +------ vortex-array/benches/like.rs | 8 ----- vortex-array/benches/list_contains_set.rs | 8 ----- vortex-array/benches/list_length.rs | 6 ---- vortex-array/benches/list_sum.rs | 6 ---- .../benches/listview_builder_extend.rs | 6 ---- vortex-array/benches/listview_rebuild.rs | 6 ---- vortex-array/benches/listview_zip.rs | 8 ----- vortex-array/benches/patches_lookup.rs | 8 ----- .../piecewise_sequence_take_primitive.rs | 8 ----- vortex-array/benches/primitive_zip.rs | 16 ++-------- vortex-array/benches/probe.rs | 16 ++-------- vortex-array/benches/row_fn_bool_retry.rs | 8 ----- vortex-array/benches/row_fn_output.rs | 8 ----- vortex-array/benches/row_fn_utf8_input.rs | 8 ----- vortex-array/benches/scalar_at_struct.rs | 16 ++-------- vortex-array/benches/scalar_construction.rs | 16 ++-------- vortex-array/benches/scalar_fn_probe.rs | 8 ----- vortex-array/benches/scalar_subtract.rs | 8 ----- vortex-array/benches/take_chunked.rs | 8 ----- vortex-array/benches/take_filter.rs | 6 ---- vortex-array/benches/take_fsl.rs | 8 ----- vortex-array/benches/take_patches.rs | 6 ---- vortex-array/benches/take_primitive.rs | 8 ----- vortex-array/benches/take_struct.rs | 8 ----- vortex-array/benches/take_varbin.rs | 16 ++-------- vortex-array/benches/validity_is_valid.rs | 16 ++-------- vortex-array/benches/varbinview_compact.rs | 8 ----- vortex-array/benches/varbinview_fill_null.rs | 8 ----- vortex-array/benches/varbinview_try_new.rs | 16 ++-------- vortex-array/benches/varbinview_zip.rs | 8 ----- vortex-arrow/benches/to_arrow.rs | 8 ++--- vortex-btrblocks/benches/compress.rs | 6 ++-- vortex-btrblocks/benches/compress_listview.rs | 6 ++-- vortex-compressor/benches/dict_encode.rs | 6 ---- vortex-compressor/benches/float_stats.rs | 8 ----- vortex-compressor/benches/integer_stats.rs | 8 ----- vortex-compressor/benches/stats_calc.rs | 8 ----- vortex-file/benches/split_collection.rs | 8 ++--- .../benches/aggregate_partial_merge.rs | 8 ----- vortex-layout/benches/pipeline_scan.rs | 10 ------- vortex-layout/benches/zone_map_prune.rs | 12 ++------ vortex-row/benches/row_encode.rs | 16 ++-------- vortex-spatial/benches/area.rs | 25 ++++++++++++++-- vortex-spatial/benches/binary_predicates.rs | 25 ++++++++++++++-- vortex-spatial/benches/collect.rs | 25 ++++++++++++++-- vortex-spatial/benches/convex_hull.rs | 25 ++++++++++++++-- vortex-spatial/benches/distance.rs | 25 ++++++++++++++-- vortex-spatial/benches/envelope.rs | 25 ++++++++++++++-- vortex-spatial/benches/length.rs | 25 ++++++++++++++-- vortex-spatial/benches/make_line.rs | 23 ++++++++++++-- vortex-tensor/benches/cosine_similarity.rs | 8 ----- vortex-tensor/benches/inner_product.rs | 8 ----- vortex-tensor/benches/l2_norm.rs | 8 ----- .../common_encoding_tree_throughput.rs | 24 +++++++++++++-- vortex/benches/single_encoding_throughput.rs | 30 +++++++++++++++++-- vortex/benches/take_union.rs | 16 ++++++++-- 109 files changed, 300 insertions(+), 806 deletions(-) diff --git a/encodings/alp/benches/alp_compress.rs b/encodings/alp/benches/alp_compress.rs index 8884fc55f68..abbbd3cd69e 100644 --- a/encodings/alp/benches/alp_compress.rs +++ b/encodings/alp/benches/alp_compress.rs @@ -22,10 +22,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -66,8 +64,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_alp::initialize(&session); diff --git a/encodings/datetime-parts/benches/split_temporal.rs b/encodings/datetime-parts/benches/split_temporal.rs index 975466c7ec2..723ba3b5ded 100644 --- a/encodings/datetime-parts/benches/split_temporal.rs +++ b/encodings/datetime-parts/benches/split_temporal.rs @@ -12,15 +12,10 @@ use rand::SeedableRng as _; use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::TemporalArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::extension::datetime::TimeUnit; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_datetime_parts::split_temporal; @@ -34,15 +29,8 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); const BENCH_ARGS: &[(usize, TimeUnit)] = &[ (65_536, TimeUnit::Seconds), diff --git a/encodings/decimal-byte-parts/benches/dbp_assemble.rs b/encodings/decimal-byte-parts/benches/dbp_assemble.rs index 1268a14f424..33ab5efbf2a 100644 --- a/encodings/decimal-byte-parts/benches/dbp_assemble.rs +++ b/encodings/decimal-byte-parts/benches/dbp_assemble.rs @@ -111,14 +111,9 @@ mod arrays { use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; - use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::dtype::DecimalDType; use vortex_array::dtype::DecimalType; - use vortex_array::dtype::session::DTypeSession; - use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; - use vortex_array::scalar_fn::session::ScalarFnSession; - use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::buffer; use vortex_decimal_byte_parts::_benchmarking::assemble_decimal; @@ -130,15 +125,8 @@ mod arrays { use crate::common::arrays::cases; use crate::common::arrays::decimal_array; - pub(super) static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() - }); + pub(super) static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); #[divan::bench(args = cases())] fn dbp_assemble(bencher: Bencher, (values_type, len): (DecimalType, usize)) { diff --git a/encodings/decimal-byte-parts/benches/dbp_split.rs b/encodings/decimal-byte-parts/benches/dbp_split.rs index d3a6f565ede..933eb31a519 100644 --- a/encodings/decimal-byte-parts/benches/dbp_split.rs +++ b/encodings/decimal-byte-parts/benches/dbp_split.rs @@ -84,13 +84,8 @@ mod arrays { use rand::SeedableRng; use rand::rngs::StdRng; use vortex_array::VortexSessionExecute; - use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::dtype::DecimalType; - use vortex_array::dtype::session::DTypeSession; - use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; - use vortex_array::scalar_fn::session::ScalarFnSession; - use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_decimal_byte_parts::split_decimal; use vortex_error::VortexExpect; @@ -99,15 +94,8 @@ mod arrays { use crate::common::arrays::cases; use crate::common::arrays::decimal_array; - pub(super) static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() - }); + pub(super) static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); #[divan::bench(args = cases())] fn dbp_split_all_valid(bencher: Bencher, (values_type, len): (DecimalType, usize)) { diff --git a/encodings/fastlanes/benches/bitpack_blocked.rs b/encodings/fastlanes/benches/bitpack_blocked.rs index e1ffda945eb..e21a421b0ff 100644 --- a/encodings/fastlanes/benches/bitpack_blocked.rs +++ b/encodings/fastlanes/benches/bitpack_blocked.rs @@ -13,10 +13,7 @@ use mimalloc::MiMalloc; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_fastlanes::bitpack_compress::bitpack_encode_blocked; use vortex_session::VortexSession; @@ -33,10 +30,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpack_blocked_decompress.rs b/encodings/fastlanes/benches/bitpack_blocked_decompress.rs index c793639f3b9..49cd88ebe80 100644 --- a/encodings/fastlanes/benches/bitpack_blocked_decompress.rs +++ b/encodings/fastlanes/benches/bitpack_blocked_decompress.rs @@ -15,10 +15,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_fastlanes::BitPackedArraySlotsExt; use vortex_fastlanes::bitpack_compress::bitpack_encode_blocked; @@ -37,8 +35,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/bitpack_compare.rs b/encodings/fastlanes/benches/bitpack_compare.rs index 02da528fdac..acc8c89f2e8 100644 --- a/encodings/fastlanes/benches/bitpack_compare.rs +++ b/encodings/fastlanes/benches/bitpack_compare.rs @@ -24,11 +24,9 @@ use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Alignment; @@ -51,8 +49,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/bitpack_compare_sweep.rs b/encodings/fastlanes/benches/bitpack_compare_sweep.rs index 1996243700e..3dcb3f50a11 100644 --- a/encodings/fastlanes/benches/bitpack_compare_sweep.rs +++ b/encodings/fastlanes/benches/bitpack_compare_sweep.rs @@ -27,12 +27,9 @@ use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Alignment; @@ -55,10 +52,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpacking_filter.rs b/encodings/fastlanes/benches/bitpacking_filter.rs index 13d29903e5b..cda039aac5d 100644 --- a/encodings/fastlanes/benches/bitpacking_filter.rs +++ b/encodings/fastlanes/benches/bitpacking_filter.rs @@ -15,10 +15,7 @@ use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; @@ -35,10 +32,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fastlanes/benches/bitpacking_take.rs b/encodings/fastlanes/benches/bitpacking_take.rs index eb987928f10..b44bdb33da4 100644 --- a/encodings/fastlanes/benches/bitpacking_take.rs +++ b/encodings/fastlanes/benches/bitpacking_take.rs @@ -25,10 +25,8 @@ use vortex_array::assert_arrays_eq; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::NativePType; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -51,8 +49,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/canonicalize_bench.rs b/encodings/fastlanes/benches/canonicalize_bench.rs index 0b9edc49b32..7e63a06fcce 100644 --- a/encodings/fastlanes/benches/canonicalize_bench.rs +++ b/encodings/fastlanes/benches/canonicalize_bench.rs @@ -14,10 +14,8 @@ use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::builders::ArrayBuilder; use vortex_array::builders::PrimitiveBuilder; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_fastlanes::bitpack_compress::test_harness::make_array; @@ -49,8 +47,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/cast_bitpacked.rs b/encodings/fastlanes/benches/cast_bitpacked.rs index dbfda7eda5b..9cd8f7396b1 100644 --- a/encodings/fastlanes/benches/cast_bitpacked.rs +++ b/encodings/fastlanes/benches/cast_bitpacked.rs @@ -29,10 +29,8 @@ use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; @@ -53,8 +51,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/compute_between.rs b/encodings/fastlanes/benches/compute_between.rs index 792562fb46e..d3e85f61e3d 100644 --- a/encodings/fastlanes/benches/compute_between.rs +++ b/encodings/fastlanes/benches/compute_between.rs @@ -18,10 +18,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_fastlanes::bitpack_compress::bitpack_to_best_bit_width; @@ -39,8 +37,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/for_decode.rs b/encodings/fastlanes/benches/for_decode.rs index cdd032c6ae4..b7ad38413f2 100644 --- a/encodings/fastlanes/benches/for_decode.rs +++ b/encodings/fastlanes/benches/for_decode.rs @@ -26,10 +26,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -54,8 +52,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fastlanes::initialize(&session); diff --git a/encodings/fastlanes/benches/for_encode.rs b/encodings/fastlanes/benches/for_encode.rs index 66f103c115e..16676ca16cb 100644 --- a/encodings/fastlanes/benches/for_encode.rs +++ b/encodings/fastlanes/benches/for_encode.rs @@ -21,10 +21,7 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -43,10 +40,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_fastlanes::initialize(&session); session }); diff --git a/encodings/fsst/benches/chunked_dict_fsst_builder.rs b/encodings/fsst/benches/chunked_dict_fsst_builder.rs index cdb5535f6cb..f599fdcc2d5 100644 --- a/encodings/fsst/benches/chunked_dict_fsst_builder.rs +++ b/encodings/fsst/benches/chunked_dict_fsst_builder.rs @@ -9,14 +9,11 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::builders::builder_with_capacity_in; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_fsst::test_utils::gen_dict_fsst_test_data; @@ -44,9 +41,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() .with::(); vortex_fsst::initialize(&session); session diff --git a/encodings/fsst/benches/fsst_compress.rs b/encodings/fsst/benches/fsst_compress.rs index 0a78a416c1c..3a0a4e682e6 100644 --- a/encodings/fsst/benches/fsst_compress.rs +++ b/encodings/fsst/benches/fsst_compress.rs @@ -15,7 +15,6 @@ use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::VarBinArray; @@ -24,12 +23,10 @@ use vortex_array::builders::VarBinViewBuilder; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; @@ -47,9 +44,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() .with::(); vortex_fsst::initialize(&session); session diff --git a/encodings/fsst/benches/fsst_like.rs b/encodings/fsst/benches/fsst_like.rs index ecc6785f49b..a6336292ef2 100644 --- a/encodings/fsst/benches/fsst_like.rs +++ b/encodings/fsst/benches/fsst_like.rs @@ -11,14 +11,11 @@ use mimalloc::MiMalloc; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::like::Like; use vortex_array::scalar_fn::fns::like::LikeOptions; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_fsst::FSSTArray; use vortex_fsst::test_utils::NUM_STRINGS; @@ -43,9 +40,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() .with::(); vortex_fsst::initialize(&session); session diff --git a/encodings/fsst/benches/fsst_take.rs b/encodings/fsst/benches/fsst_take.rs index e384c3b9ba4..27b6339293b 100644 --- a/encodings/fsst/benches/fsst_take.rs +++ b/encodings/fsst/benches/fsst_take.rs @@ -21,10 +21,8 @@ use vortex_array::arrays::VarBinArray; use vortex_array::assert_arrays_eq; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_fsst::FSSTArray; use vortex_fsst::fsst_compress; @@ -43,8 +41,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_fsst::initialize(&session); diff --git a/encodings/fsst/benches/fsst_url_compare.rs b/encodings/fsst/benches/fsst_url_compare.rs index 98bb0d16911..f62af505f3d 100644 --- a/encodings/fsst/benches/fsst_url_compare.rs +++ b/encodings/fsst/benches/fsst_url_compare.rs @@ -11,13 +11,11 @@ use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::VarBinArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::arrays::varbin::VarBinArrayExt; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::like; use vortex_array::expr::lit; use vortex_array::expr::root; @@ -25,7 +23,6 @@ use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; @@ -47,9 +44,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() .with::(); vortex_fsst::initialize(&session); session diff --git a/encodings/onpair/benches/decode.rs b/encodings/onpair/benches/decode.rs index cc8f2951e03..931db12bc06 100644 --- a/encodings/onpair/benches/decode.rs +++ b/encodings/onpair/benches/decode.rs @@ -80,22 +80,14 @@ impl DecodeInputs { unsafe { onpair::decode_into(self.codes.as_slice(), self.dict(), out) } } } -use vortex_array::aggregate_fn::session::AggregateFnSession; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_onpair::onpair_compress; static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() - .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_onpair::initialize(&session); session }); diff --git a/encodings/pco/benches/scalar.rs b/encodings/pco/benches/scalar.rs index d5694614ae9..f39266881b3 100644 --- a/encodings/pco/benches/scalar.rs +++ b/encodings/pco/benches/scalar.rs @@ -12,13 +12,9 @@ use mimalloc::MiMalloc; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_error::VortexExpect; use vortex_pco::Pco; @@ -42,11 +38,7 @@ const CASES: &[(usize, bool, bool)] = &[ static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/encodings/runend/benches/run_end_compress.rs b/encodings/runend/benches/run_end_compress.rs index c6a0e2decf9..02bae00dc89 100644 --- a/encodings/runend/benches/run_end_compress.rs +++ b/encodings/runend/benches/run_end_compress.rs @@ -15,10 +15,8 @@ use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::IntegerPType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -41,8 +39,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_runend::initialize(&session); diff --git a/encodings/runend/benches/run_end_decode.rs b/encodings/runend/benches/run_end_decode.rs index 94bcc189fa1..5fda697c2fd 100644 --- a/encodings/runend/benches/run_end_decode.rs +++ b/encodings/runend/benches/run_end_decode.rs @@ -12,10 +12,7 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; @@ -35,10 +32,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_decode_primitive.rs b/encodings/runend/benches/run_end_decode_primitive.rs index b48b1aec042..817d0b1b50b 100644 --- a/encodings/runend/benches/run_end_decode_primitive.rs +++ b/encodings/runend/benches/run_end_decode_primitive.rs @@ -17,10 +17,7 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; @@ -40,10 +37,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_null_count.rs b/encodings/runend/benches/run_end_null_count.rs index 937bf9ebdfc..aa6f6c0a06a 100644 --- a/encodings/runend/benches/run_end_null_count.rs +++ b/encodings/runend/benches/run_end_null_count.rs @@ -14,10 +14,7 @@ use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_runend::RunEnd; @@ -64,10 +61,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_sum.rs b/encodings/runend/benches/run_end_sum.rs index 9ac577f6cf4..517189b5a0a 100644 --- a/encodings/runend/benches/run_end_sum.rs +++ b/encodings/runend/benches/run_end_sum.rs @@ -13,10 +13,7 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::fns::sum_v2::sum_v2; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_runend::RunEnd; use vortex_session::VortexSession; @@ -28,10 +25,7 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::(); + .with::(); vortex_runend::initialize(&session); session }); diff --git a/encodings/runend/benches/run_end_take.rs b/encodings/runend/benches/run_end_take.rs index 41b193fdd85..cf6045772c9 100644 --- a/encodings/runend/benches/run_end_take.rs +++ b/encodings/runend/benches/run_end_take.rs @@ -17,10 +17,8 @@ use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -39,8 +37,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_runend::initialize(&session); diff --git a/encodings/sparse/benches/sparse_canonical.rs b/encodings/sparse/benches/sparse_canonical.rs index b902a39b579..638ff21f1e1 100644 --- a/encodings/sparse/benches/sparse_canonical.rs +++ b/encodings/sparse/benches/sparse_canonical.rs @@ -18,11 +18,9 @@ use vortex_array::arrays::ListViewArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::Nullability::NonNullable; use vortex_array::dtype::PType::I32; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; @@ -42,8 +40,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_sparse::initialize(&session); diff --git a/encodings/sparse/benches/sparse_pushdown.rs b/encodings/sparse/benches/sparse_pushdown.rs index 4da32abe91b..f3e6133dccc 100644 --- a/encodings/sparse/benches/sparse_pushdown.rs +++ b/encodings/sparse/benches/sparse_pushdown.rs @@ -32,12 +32,10 @@ use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_error::VortexExpect; @@ -59,8 +57,6 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::(); vortex_sparse::initialize(&session); diff --git a/vortex-array/benches/aggregate_grouped.rs b/vortex-array/benches/aggregate_grouped.rs index 1cee8b15682..bd6e1c92936 100644 --- a/vortex-array/benches/aggregate_grouped.rs +++ b/vortex-array/benches/aggregate_grouped.rs @@ -27,11 +27,7 @@ use vortex_array::arrays::ListViewArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::DType; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -46,12 +42,8 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); const GROUP_COUNT: usize = 128; diff --git a/vortex-array/benches/aggregate_max.rs b/vortex-array/benches/aggregate_max.rs index d25276a77f0..472bc414a46 100644 --- a/vortex-array/benches/aggregate_max.rs +++ b/vortex-array/benches/aggregate_max.rs @@ -15,11 +15,7 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -35,12 +31,8 @@ const N: usize = 15_000; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); #[divan::bench] diff --git a/vortex-array/benches/aggregate_sum.rs b/vortex-array/benches/aggregate_sum.rs index 91f159ee664..fd7a7944ed4 100644 --- a/vortex-array/benches/aggregate_sum.rs +++ b/vortex-array/benches/aggregate_sum.rs @@ -11,12 +11,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::fns::sum_v2::sum_v2; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::stats::Stat; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -32,12 +28,8 @@ const N: usize = 15_000; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); #[divan::bench] diff --git a/vortex-array/benches/binary_ops.rs b/vortex-array/benches/binary_ops.rs index 29b373485c7..1103b6571fb 100644 --- a/vortex-array/benches/binary_ops.rs +++ b/vortex-array/benches/binary_ops.rs @@ -28,19 +28,15 @@ use vortex_array::ArrayRef; use vortex_array::Executable; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::DecimalArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DecimalDType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -53,11 +49,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/bool_zip.rs b/vortex-array/benches/bool_zip.rs index c2696cd09d7..40994da33d7 100644 --- a/vortex-array/benches/bool_zip.rs +++ b/vortex-array/benches/bool_zip.rs @@ -11,14 +11,9 @@ use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -30,15 +25,8 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); const LEN: usize = 65_536; diff --git a/vortex-array/benches/cast_decimal.rs b/vortex-array/benches/cast_decimal.rs index 25b62d4a037..79c215c2f40 100644 --- a/vortex-array/benches/cast_decimal.rs +++ b/vortex-array/benches/cast_decimal.rs @@ -20,17 +20,12 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::DecimalArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::DecimalDType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_session::VortexSession; @@ -50,15 +45,8 @@ fn main() { // and to keep the CodSpeed simulation under 1ms per benchmark. const SIZES: &[usize] = &[16_384]; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); /// Builds an `i64`-backed `Decimal(precision, scale)` array of `n` values that all fit in /// precision 10, optionally with ~50% nulls. diff --git a/vortex-array/benches/cast_primitive.rs b/vortex-array/benches/cast_primitive.rs index 7e0ad4b41d5..662efbadbb9 100644 --- a/vortex-array/benches/cast_primitive.rs +++ b/vortex-array/benches/cast_primitive.rs @@ -18,12 +18,8 @@ use vortex_array::dtype::DType; use vortex_array::dtype::DecimalDType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::stats::Stat; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -41,12 +37,8 @@ const SIZES: &[usize] = &[8_192]; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); #[divan::bench(args = SIZES)] diff --git a/vortex-array/benches/chunk_array_builder.rs b/vortex-array/benches/chunk_array_builder.rs index aa2517cc5ed..f259e09cac8 100644 --- a/vortex-array/benches/chunk_array_builder.rs +++ b/vortex-array/benches/chunk_array_builder.rs @@ -12,7 +12,6 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::ConstantArray; @@ -21,11 +20,8 @@ use vortex_array::builders::VarBinBuilder; use vortex_array::builders::VarBinViewBuilder; use vortex_array::builders::builder_with_capacity_in; use vortex_array::dtype::DType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -47,11 +43,7 @@ const BENCH_ARGS: &[(usize, usize)] = &[ static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/chunked_dict_builder.rs b/vortex-array/benches/chunked_dict_builder.rs index 95dcddc1cf7..22b266ab769 100644 --- a/vortex-array/benches/chunked_dict_builder.rs +++ b/vortex-array/benches/chunked_dict_builder.rs @@ -9,15 +9,11 @@ use rand::distr::Distribution; use rand::distr::StandardUniform; use vortex_array::Canonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::dict_test::gen_dict_primitive_chunks; use vortex_array::builders::builder_with_capacity_in; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -31,11 +27,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/chunked_fsl_canonicalize.rs b/vortex-array/benches/chunked_fsl_canonicalize.rs index f6a4ec6ce31..741a40c3109 100644 --- a/vortex-array/benches/chunked_fsl_canonicalize.rs +++ b/vortex-array/benches/chunked_fsl_canonicalize.rs @@ -17,14 +17,9 @@ use mimalloc::MiMalloc; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::FixedSizeListArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -37,15 +32,8 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); /// Number of lists in each chunk. const LISTS_PER_CHUNK: usize = 1_000; diff --git a/vortex-array/benches/compare.rs b/vortex-array/benches/compare.rs index d67cd262980..ddf6343e9ab 100644 --- a/vortex-array/benches/compare.rs +++ b/vortex-array/benches/compare.rs @@ -35,7 +35,6 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::DecimalArray; @@ -44,24 +43,17 @@ use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DecimalDType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/compare_sorted.rs b/vortex-array/benches/compare_sorted.rs index 74d5f009dd2..a50a6666949 100644 --- a/vortex-array/benches/compare_sorted.rs +++ b/vortex-array/benches/compare_sorted.rs @@ -15,13 +15,11 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::ExtensionArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::stats::Precision; use vortex_array::expr::stats::Stat; use vortex_array::extension::datetime::TimeUnit; @@ -31,18 +29,12 @@ use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar::ScalarValue; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/dict_compare.rs b/vortex-array/benches/dict_compare.rs index 36a4903fd68..f97a12908d2 100644 --- a/vortex-array/benches/dict_compare.rs +++ b/vortex-array/benches/dict_compare.rs @@ -19,15 +19,12 @@ use vortex_array::arrays::dict_test::gen_varbin_words; use vortex_array::arrays::varbin::VarBinArrayExt; use vortex_array::builders::dict::dict_encode; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::eq; use vortex_array::expr::lit; use vortex_array::expr::root; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -40,10 +37,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/dict_compress.rs b/vortex-array/benches/dict_compress.rs index 53bedf8b2dc..f7ac68cd8bf 100644 --- a/vortex-array/benches/dict_compress.rs +++ b/vortex-array/benches/dict_compress.rs @@ -19,11 +19,8 @@ use vortex_array::arrays::dict_test::gen_primitive_for_dict; use vortex_array::arrays::dict_test::gen_varbin_words; use vortex_array::builders::dict::dict_encode; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -51,10 +48,7 @@ const BENCH_ARGS: &[(usize, usize)] = &[ static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/dict_mask.rs b/vortex-array/benches/dict_mask.rs index a3ae67d4475..6218e096f7c 100644 --- a/vortex-array/benches/dict_mask.rs +++ b/vortex-array/benches/dict_mask.rs @@ -13,25 +13,17 @@ use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::DictArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_mask::Mask; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/dict_unreferenced_mask.rs b/vortex-array/benches/dict_unreferenced_mask.rs index 9b81367c27d..6a4f79f7283 100644 --- a/vortex-array/benches/dict_unreferenced_mask.rs +++ b/vortex-array/benches/dict_unreferenced_mask.rs @@ -12,26 +12,14 @@ use rand::SeedableRng; use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::DictArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::dict::DictArrayExt; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; diff --git a/vortex-array/benches/expr/case_when_bench.rs b/vortex-array/benches/expr/case_when_bench.rs index 677891ac61b..01f721dffc3 100644 --- a/vortex-array/benches/expr/case_when_bench.rs +++ b/vortex-array/benches/expr/case_when_bench.rs @@ -12,7 +12,6 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::DecimalArray; @@ -21,7 +20,6 @@ use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DecimalDType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::case_when; use vortex_array::expr::case_when_no_else; use vortex_array::expr::eq; @@ -38,8 +36,6 @@ use vortex_array::scalar_fn::ScalarFnVTableExt; use vortex_array::scalar_fn::fns::case_when::CaseWhen; use vortex_array::scalar_fn::fns::case_when::CaseWhenOptions; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -49,11 +45,7 @@ static GLOBAL: MiMalloc = MiMalloc; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/filter_bool.rs b/vortex-array/benches/filter_bool.rs index e39b2225fd6..10d4a4db090 100644 --- a/vortex-array/benches/filter_bool.rs +++ b/vortex-array/benches/filter_bool.rs @@ -19,13 +19,8 @@ use rand::prelude::*; use rand_distr::Zipf; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::BitBuffer; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -38,15 +33,8 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); const SIZES: &[usize] = &[1_000, 10_000, 100_000, 250_000]; const DENSITY_SWEEP_SIZE: usize = 100_000; diff --git a/vortex-array/benches/filter_fixed_width.rs b/vortex-array/benches/filter_fixed_width.rs index c34e4a7ea2f..12d98610e77 100644 --- a/vortex-array/benches/filter_fixed_width.rs +++ b/vortex-array/benches/filter_fixed_width.rs @@ -20,16 +20,12 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::DecimalArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::DecimalDType; use vortex_array::dtype::i256; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::BitBuffer; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -44,11 +40,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/filter_fsl.rs b/vortex-array/benches/filter_fsl.rs index 01fb0f8ef68..86082ad43ba 100644 --- a/vortex-array/benches/filter_fsl.rs +++ b/vortex-array/benches/filter_fsl.rs @@ -16,14 +16,10 @@ use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::FixedSizeListArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_mask::Mask; @@ -39,11 +35,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/filter_list.rs b/vortex-array/benches/filter_list.rs index 1e980d5a4c9..09fa775ce8f 100644 --- a/vortex-array/benches/filter_list.rs +++ b/vortex-array/benches/filter_list.rs @@ -16,11 +16,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ListArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_mask::Mask; @@ -36,10 +33,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/interleave.rs b/vortex-array/benches/interleave.rs index 5c8ed7c5170..de96de7ab53 100644 --- a/vortex-array/benches/interleave.rs +++ b/vortex-array/benches/interleave.rs @@ -26,26 +26,18 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::InterleaveArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/kleene_bool.rs b/vortex-array/benches/kleene_bool.rs index 8ace022b41b..b6bfb25e442 100644 --- a/vortex-array/benches/kleene_bool.rs +++ b/vortex-array/benches/kleene_bool.rs @@ -12,19 +12,15 @@ use vortex_array::ArrayRef; use vortex_array::Columnar; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -37,12 +33,8 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() .with::() + .with::() }); const LEN: usize = 65_536; diff --git a/vortex-array/benches/like.rs b/vortex-array/benches/like.rs index 63cfc29617d..bce9e8fa5fb 100644 --- a/vortex-array/benches/like.rs +++ b/vortex-array/benches/like.rs @@ -14,26 +14,18 @@ use rand::prelude::StdRng; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::VarBinViewArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::fns::like::Like; use vortex_array::scalar_fn::fns::like::LikeOptions; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/list_contains_set.rs b/vortex-array/benches/list_contains_set.rs index fb4b6781330..56b486dd404 100644 --- a/vortex-array/benches/list_contains_set.rs +++ b/vortex-array/benches/list_contains_set.rs @@ -20,7 +20,6 @@ use rand::prelude::StdRng; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::ListArray; @@ -29,24 +28,17 @@ use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::list_contains; use vortex_array::expr::lit; use vortex_array::expr::root; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/list_length.rs b/vortex-array/benches/list_length.rs index a9ada2d4ad3..238f8ab3be2 100644 --- a/vortex-array/benches/list_length.rs +++ b/vortex-array/benches/list_length.rs @@ -26,13 +26,10 @@ use vortex_array::arrays::BoolArray; use vortex_array::arrays::ListArray; use vortex_array::arrays::ListViewArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::list_length; use vortex_array::expr::root; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -47,10 +44,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/list_sum.rs b/vortex-array/benches/list_sum.rs index 65a0c1ab4a1..fe366820140 100644 --- a/vortex-array/benches/list_sum.rs +++ b/vortex-array/benches/list_sum.rs @@ -25,13 +25,10 @@ use vortex_array::arrays::FixedSizeListArray; use vortex_array::arrays::ListArray; use vortex_array::arrays::ListViewArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::list_sum; use vortex_array::expr::root; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -46,10 +43,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/listview_builder_extend.rs b/vortex-array/benches/listview_builder_extend.rs index 17b3819b97f..a094a3aa506 100644 --- a/vortex-array/benches/listview_builder_extend.rs +++ b/vortex-array/benches/listview_builder_extend.rs @@ -20,21 +20,15 @@ use vortex_array::dtype::DType; use vortex_array::dtype::Nullability::NonNullable; use vortex_array::dtype::Nullability::Nullable; use vortex_array::dtype::PType::I32; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/listview_rebuild.rs b/vortex-array/benches/listview_rebuild.rs index 4c8131eb1d4..1a08600f4cf 100644 --- a/vortex-array/benches/listview_rebuild.rs +++ b/vortex-array/benches/listview_rebuild.rs @@ -23,11 +23,8 @@ use vortex_array::arrays::VarBinViewArray; use vortex_array::arrays::listview::ListViewArraySlotsExt; use vortex_array::arrays::listview::ListViewRebuildMode; use vortex_array::dtype::FieldNames; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -43,10 +40,7 @@ fn main() { /// A shared session for the `ListView` rebuild benchmarks, used to create execution contexts. static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/listview_zip.rs b/vortex-array/benches/listview_zip.rs index d5363263002..eafde33ea8e 100644 --- a/vortex-array/benches/listview_zip.rs +++ b/vortex-array/benches/listview_zip.rs @@ -11,15 +11,11 @@ use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ListViewArray; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_mask::Mask; @@ -35,11 +31,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/patches_lookup.rs b/vortex-array/benches/patches_lookup.rs index 6244b94e053..71e569558b1 100644 --- a/vortex-array/benches/patches_lookup.rs +++ b/vortex-array/benches/patches_lookup.rs @@ -14,13 +14,9 @@ use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::patches::PATCH_CHUNK_SIZE; use vortex_array::patches::Patches; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -29,12 +25,8 @@ static GLOBAL: MiMalloc = MiMalloc; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); fn main() { diff --git a/vortex-array/benches/piecewise_sequence_take_primitive.rs b/vortex-array/benches/piecewise_sequence_take_primitive.rs index 8a48c3b320d..fd7001701ac 100644 --- a/vortex-array/benches/piecewise_sequence_take_primitive.rs +++ b/vortex-array/benches/piecewise_sequence_take_primitive.rs @@ -20,15 +20,11 @@ use rand::prelude::*; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PiecewiseSequenceArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -41,11 +37,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/primitive_zip.rs b/vortex-array/benches/primitive_zip.rs index d4b9758b270..0df9a15c6b5 100644 --- a/vortex-array/benches/primitive_zip.rs +++ b/vortex-array/benches/primitive_zip.rs @@ -15,14 +15,9 @@ use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_mask::Mask; @@ -36,15 +31,8 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); // Sized so the bench stays well under a few hundred microseconds under CodSpeed's instruction-count // simulation, which runs ~10x the local walltime; the branchless value blend is still exercised. diff --git a/vortex-array/benches/probe.rs b/vortex-array/benches/probe.rs index f6783990ea6..df2e8c4c16d 100644 --- a/vortex-array/benches/probe.rs +++ b/vortex-array/benches/probe.rs @@ -12,16 +12,11 @@ use mimalloc::MiMalloc; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::DictArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_error::VortexExpect; @@ -40,15 +35,8 @@ const VALUES: usize = 1_024; // Sized to keep the CodSpeed simulation short per benchmark. const ACCESSES: usize = 256; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); fn nullable_primitive(len: usize) -> ArrayRef { PrimitiveArray::new( diff --git a/vortex-array/benches/row_fn_bool_retry.rs b/vortex-array/benches/row_fn_bool_retry.rs index e4894b8737a..858c7eb8a3a 100644 --- a/vortex-array/benches/row_fn_bool_retry.rs +++ b/vortex-array/benches/row_fn_bool_retry.rs @@ -14,22 +14,18 @@ use divan::counter::ItemsCount; use mimalloc::MiMalloc; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::DType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::EmptyOptions; use vortex_array::scalar_fn::ScalarFnId; use vortex_array::scalar_fn::VecExecutionArgs; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::scalar_fn::unstable::row::RowFn; use vortex_array::scalar_fn::unstable::row::RowVisitor; use vortex_array::scalar_fn::unstable::row::execute_rows; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_error::VortexExpect; use vortex_error::VortexResult; @@ -42,11 +38,7 @@ static GLOBAL: MiMalloc = MiMalloc; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/row_fn_output.rs b/vortex-array/benches/row_fn_output.rs index 583d1627f03..200a04a7810 100644 --- a/vortex-array/benches/row_fn_output.rs +++ b/vortex-array/benches/row_fn_output.rs @@ -15,22 +15,18 @@ use mimalloc::MiMalloc; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::DType; use vortex_array::dtype::NativePType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::EmptyOptions; use vortex_array::scalar_fn::ScalarFnId; use vortex_array::scalar_fn::VecExecutionArgs; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::scalar_fn::unstable::row::RowFn; use vortex_array::scalar_fn::unstable::row::RowVisitor; use vortex_array::scalar_fn::unstable::row::execute_rows; -use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; @@ -47,11 +43,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/row_fn_utf8_input.rs b/vortex-array/benches/row_fn_utf8_input.rs index ebc493db1e9..792758b7719 100644 --- a/vortex-array/benches/row_fn_utf8_input.rs +++ b/vortex-array/benches/row_fn_utf8_input.rs @@ -14,23 +14,19 @@ use mimalloc::MiMalloc; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::VarBinArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::EmptyOptions; use vortex_array::scalar_fn::ScalarFnId; use vortex_array::scalar_fn::VecExecutionArgs; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::scalar_fn::unstable::row::RowFn; use vortex_array::scalar_fn::unstable::row::RowVisitor; use vortex_array::scalar_fn::unstable::row::Utf8Column; use vortex_array::scalar_fn::unstable::row::execute_rows; -use vortex_array::session::ArraySession; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_session::VortexSession; @@ -46,11 +42,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/scalar_at_struct.rs b/vortex-array/benches/scalar_at_struct.rs index 6d37d7c0b40..863fabf1884 100644 --- a/vortex-array/benches/scalar_at_struct.rs +++ b/vortex-array/benches/scalar_at_struct.rs @@ -14,14 +14,9 @@ use rand::rngs::StdRng; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -38,15 +33,8 @@ const ARRAY_SIZE: usize = 100_000; // Sized to keep the CodSpeed simulation under 1ms per benchmark. const NUM_ACCESSES: usize = 100; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); #[divan::bench] fn execute_scalar_struct_simple(bencher: Bencher) { diff --git a/vortex-array/benches/scalar_construction.rs b/vortex-array/benches/scalar_construction.rs index 82b21cf652c..251fc4d1f01 100644 --- a/vortex-array/benches/scalar_construction.rs +++ b/vortex-array/benches/scalar_construction.rs @@ -19,23 +19,18 @@ use vortex_array::aggregate_fn::AggregateFnVTableExt; use vortex_array::aggregate_fn::NumericalAggregateOpts; use vortex_array::aggregate_fn::fns::count::Count; use vortex_array::aggregate_fn::fns::sum_v2::SumV2; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::dtype::DType; use vortex_array::dtype::FieldNames; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::StructFields; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::stats::Precision; use vortex_array::expr::stats::Stat; use vortex_array::expr::stats::StatsProvider; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::PValue; use vortex_array::scalar::Scalar; use vortex_array::scalar::ScalarValue; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::stats::StatsSet; use vortex_buffer::Buffer; use vortex_buffer::BufferString; @@ -48,15 +43,8 @@ const N: usize = 1024; /// A merge costs about 300ns, so it runs fewer times to keep the CodSpeed simulation under 1ms. const MERGES: usize = 64; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); fn main() { LazyLock::force(&SESSION); diff --git a/vortex-array/benches/scalar_fn_probe.rs b/vortex-array/benches/scalar_fn_probe.rs index 98403e03dfe..4ce01520d17 100644 --- a/vortex-array/benches/scalar_fn_probe.rs +++ b/vortex-array/benches/scalar_fn_probe.rs @@ -14,18 +14,14 @@ use rand::rngs::StdRng; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::ScalarFnArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar_fn::TypedScalarFnInstance; use vortex_array::scalar_fn::fns::binary::Binary; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -41,11 +37,7 @@ const NUM_ACCESSES: usize = 50; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/scalar_subtract.rs b/vortex-array/benches/scalar_subtract.rs index 6b75a00c582..c882fc9fb76 100644 --- a/vortex-array/benches/scalar_subtract.rs +++ b/vortex-array/benches/scalar_subtract.rs @@ -14,17 +14,13 @@ use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::ConstantArray; use vortex_array::builtins::ArrayBuiltins; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; use vortex_array::scalar_fn::fns::operators::Operator; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -38,11 +34,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/take_chunked.rs b/vortex-array/benches/take_chunked.rs index c8fce6c678a..ea8d7831a5c 100644 --- a/vortex-array/benches/take_chunked.rs +++ b/vortex-array/benches/take_chunked.rs @@ -17,28 +17,20 @@ use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::FixedSizeListArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/take_filter.rs b/vortex-array/benches/take_filter.rs index 3a032165a68..9f8b5a5eff4 100644 --- a/vortex-array/benches/take_filter.rs +++ b/vortex-array/benches/take_filter.rs @@ -32,11 +32,8 @@ use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ListArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::BitBufferMut; @@ -70,10 +67,7 @@ const NULL_INDEX_INTERVAL: usize = 8; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/take_fsl.rs b/vortex-array/benches/take_fsl.rs index 24d0ab12d53..dcee6a824e4 100644 --- a/vortex-array/benches/take_fsl.rs +++ b/vortex-array/benches/take_fsl.rs @@ -23,14 +23,10 @@ use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::FixedSizeListArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -45,11 +41,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/take_patches.rs b/vortex-array/benches/take_patches.rs index 920761a4b15..ecc4e330593 100644 --- a/vortex-array/benches/take_patches.rs +++ b/vortex-array/benches/take_patches.rs @@ -16,12 +16,9 @@ use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::patches::Patches; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -36,10 +33,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-array/benches/take_primitive.rs b/vortex-array/benches/take_primitive.rs index 6e81e37040c..7f42da46689 100644 --- a/vortex-array/benches/take_primitive.rs +++ b/vortex-array/benches/take_primitive.rs @@ -17,14 +17,10 @@ use rand_distr::Zipf; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::DictArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -47,11 +43,7 @@ const VECTOR_SIZE: &[usize] = &[16, 256, 2048, 8192]; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/take_struct.rs b/vortex-array/benches/take_struct.rs index 7390733a8e8..d84d2639559 100644 --- a/vortex-array/benches/take_struct.rs +++ b/vortex-array/benches/take_struct.rs @@ -14,14 +14,10 @@ use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -36,11 +32,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/take_varbin.rs b/vortex-array/benches/take_varbin.rs index 677b4e82564..afd69b670e0 100644 --- a/vortex-array/benches/take_varbin.rs +++ b/vortex-array/benches/take_varbin.rs @@ -13,15 +13,10 @@ use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::VarBinArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -33,15 +28,8 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); const ARRAY_SIZE: usize = 20_000; // Sized to keep CodSpeed simulation under 1ms. diff --git a/vortex-array/benches/validity_is_valid.rs b/vortex-array/benches/validity_is_valid.rs index f278b443113..eee32f7a695 100644 --- a/vortex-array/benches/validity_is_valid.rs +++ b/vortex-array/benches/validity_is_valid.rs @@ -19,12 +19,7 @@ use std::sync::LazyLock; use divan::Bencher; use mimalloc::MiMalloc; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_session::VortexSession; @@ -46,15 +41,8 @@ fn array_validity(len: usize) -> Validity { )) } -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); /// Per-element validity check over array-backed validity (the antipattern). This mirrors the /// deprecated `Validity::is_valid(i)`: a fresh `ExecutionCtx` plus a scalar lookup on every call. diff --git a/vortex-array/benches/varbinview_compact.rs b/vortex-array/benches/varbinview_compact.rs index 62ba38fb589..d6ce9bcf01d 100644 --- a/vortex-array/benches/varbinview_compact.rs +++ b/vortex-array/benches/varbinview_compact.rs @@ -11,16 +11,12 @@ use rand::rngs::StdRng; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::VarBinViewArray; use vortex_array::builders::VarBinViewBuilder; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_buffer::Buffer; use vortex_error::VortexExpect; use vortex_session::VortexSession; @@ -45,11 +41,7 @@ const ARGS: &[(usize, usize)] = &[ static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/varbinview_fill_null.rs b/vortex-array/benches/varbinview_fill_null.rs index b8601c2be0c..fc874fb947a 100644 --- a/vortex-array/benches/varbinview_fill_null.rs +++ b/vortex-array/benches/varbinview_fill_null.rs @@ -11,17 +11,13 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::VarBinViewArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_session::VortexSession; #[global_allocator] @@ -34,11 +30,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-array/benches/varbinview_try_new.rs b/vortex-array/benches/varbinview_try_new.rs index 42b0e5bc811..7228dcf2674 100644 --- a/vortex-array/benches/varbinview_try_new.rs +++ b/vortex-array/benches/varbinview_try_new.rs @@ -7,16 +7,11 @@ use std::sync::LazyLock; use divan::Bencher; use mimalloc::MiMalloc; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::VarBinViewArray; use vortex_array::arrays::varbinview::BinaryView; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -34,15 +29,8 @@ fn main() { const SIZES: &[usize] = &[1 << 12, 1 << 16]; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); fn garbage_view() -> BinaryView { BinaryView::new_ref(13, *b"AAAA", 0xDEAD_BEEF, 0xF000_0000) diff --git a/vortex-array/benches/varbinview_zip.rs b/vortex-array/benches/varbinview_zip.rs index 93136c0cfea..1a39b83ddfc 100644 --- a/vortex-array/benches/varbinview_zip.rs +++ b/vortex-array/benches/varbinview_zip.rs @@ -10,16 +10,12 @@ use mimalloc::MiMalloc; use vortex_array::IntoArray; use vortex_array::RecursiveCanonical; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::VarBinViewArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_mask::Mask; use vortex_session::VortexSession; @@ -33,11 +29,7 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-arrow/benches/to_arrow.rs b/vortex-arrow/benches/to_arrow.rs index d0c85449325..0d06847ac16 100644 --- a/vortex-arrow/benches/to_arrow.rs +++ b/vortex-arrow/benches/to_arrow.rs @@ -33,10 +33,8 @@ use vortex_array::dtype::DecimalDType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::StructFields; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::session::ArraySessionExt; #[expect( @@ -44,6 +42,7 @@ use vortex_array::session::ArraySessionExt; reason = "benchmark comparing deprecated method with new one" )] use vortex_arrow::ArrowArrayExecutor; +use vortex_arrow::ArrowSession; use vortex_arrow::ArrowSessionExt; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; @@ -64,10 +63,9 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() - .with::(); + .with::() + .with::(); vortex_fsst::initialize(&session); vortex_onpair::initialize(&session); session.arrays().register(Zstd); diff --git a/vortex-btrblocks/benches/compress.rs b/vortex-btrblocks/benches/compress.rs index 828a142ba99..5bc2eefbaba 100644 --- a/vortex-btrblocks/benches/compress.rs +++ b/vortex-btrblocks/benches/compress.rs @@ -20,12 +20,11 @@ mod benchmarks { use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; - use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; - use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_btrblocks::BtrBlocksCompressorBuilder; + use vortex_btrblocks::CompressionSession; use vortex_buffer::buffer_mut; use vortex_session::VortexSession; use vortex_utils::aliases::hash_set::HashSet; @@ -34,10 +33,9 @@ mod benchmarks { VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::() + .with::() }); fn make_clickbench_window_name() -> ArrayRef { diff --git a/vortex-btrblocks/benches/compress_listview.rs b/vortex-btrblocks/benches/compress_listview.rs index 6476c0e02f2..4181cde5416 100644 --- a/vortex-btrblocks/benches/compress_listview.rs +++ b/vortex-btrblocks/benches/compress_listview.rs @@ -24,13 +24,12 @@ mod benchmarks { use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::FieldNames; - use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; - use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_btrblocks::BtrBlocksCompressorBuilder; + use vortex_btrblocks::CompressionSession; use vortex_buffer::buffer_mut; use vortex_session::VortexSession; @@ -41,10 +40,9 @@ mod benchmarks { VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::() + .with::() }); const SHORT_STRINGS: &[&str] = &[ diff --git a/vortex-compressor/benches/dict_encode.rs b/vortex-compressor/benches/dict_encode.rs index b4b4abb02fa..25edcb89ce5 100644 --- a/vortex-compressor/benches/dict_encode.rs +++ b/vortex-compressor/benches/dict_encode.rs @@ -13,21 +13,15 @@ use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::BoolArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::builders::dict::dict_encode; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; use vortex_session::VortexSession; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() .with::() }); diff --git a/vortex-compressor/benches/float_stats.rs b/vortex-compressor/benches/float_stats.rs index 78e0b18419f..9fa71ef22f0 100644 --- a/vortex-compressor/benches/float_stats.rs +++ b/vortex-compressor/benches/float_stats.rs @@ -11,11 +11,7 @@ use rand::prelude::*; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -28,12 +24,8 @@ static GLOBAL: MiMalloc = MiMalloc; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); const LEN: usize = 64 * 1024; diff --git a/vortex-compressor/benches/integer_stats.rs b/vortex-compressor/benches/integer_stats.rs index c7db4677d98..068f6f410c0 100644 --- a/vortex-compressor/benches/integer_stats.rs +++ b/vortex-compressor/benches/integer_stats.rs @@ -11,11 +11,7 @@ use rand::prelude::*; use vortex_array::VortexSessionExecute; use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; @@ -28,12 +24,8 @@ static GLOBAL: MiMalloc = MiMalloc; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); const LEN: usize = 64 * 1024; diff --git a/vortex-compressor/benches/stats_calc.rs b/vortex-compressor/benches/stats_calc.rs index 94340c04eb6..7dedccd4c99 100644 --- a/vortex-compressor/benches/stats_calc.rs +++ b/vortex-compressor/benches/stats_calc.rs @@ -14,11 +14,7 @@ mod benchmarks { use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::NativePType; - use vortex_array::dtype::session::DTypeSession; - use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; - use vortex_array::scalar_fn::session::ScalarFnSession; - use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_compressor::stats::GenerateStatsOptions; @@ -27,12 +23,8 @@ mod benchmarks { pub(super) static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); const LEN: usize = 64_000; diff --git a/vortex-file/benches/split_collection.rs b/vortex-file/benches/split_collection.rs index 71625624e60..8985f26e833 100644 --- a/vortex-file/benches/split_collection.rs +++ b/vortex-file/benches/split_collection.rs @@ -23,12 +23,11 @@ use vortex_array::arrays::ChunkedArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::Field; use vortex_array::dtype::FieldMask; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::session::ArraySession; use vortex_btrblocks::BtrBlocksCompressorBuilder; +use vortex_btrblocks::CompressionSession; use vortex_buffer::Buffer; use vortex_buffer::ByteBufferMut; use vortex_file::OpenOptionsSessionExt; @@ -70,12 +69,11 @@ static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty() .with::() .with::() - .with::() - .with::() .with::() .with::() - .with::() .with::() + .with::() + .with::() .with_tokio(); vortex_file::register_default_encodings(&session); session diff --git a/vortex-layout/benches/aggregate_partial_merge.rs b/vortex-layout/benches/aggregate_partial_merge.rs index fe54480829b..74c94a6656a 100644 --- a/vortex-layout/benches/aggregate_partial_merge.rs +++ b/vortex-layout/benches/aggregate_partial_merge.rs @@ -35,12 +35,8 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_layout::layouts::zoned::aggregates::bloom_filter::BloomFilter; @@ -58,12 +54,8 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() .with::() - .with::() }); /// Zones merged per iteration. diff --git a/vortex-layout/benches/pipeline_scan.rs b/vortex-layout/benches/pipeline_scan.rs index 3a371199c80..f851a0bbc13 100644 --- a/vortex-layout/benches/pipeline_scan.rs +++ b/vortex-layout/benches/pipeline_scan.rs @@ -12,15 +12,11 @@ use divan::Bencher; use mimalloc::MiMalloc; use vortex_array::ArrayContext; use vortex_array::IntoArray; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::Nullability; use vortex_array::dtype::StructFields; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::serde::SerializeOptions; use vortex_array::session::ArraySession; use vortex_buffer::Alignment; @@ -32,7 +28,6 @@ use vortex_layout::plan::physical::pipeline::Scan; use vortex_layout::plan::physical::pipeline::Split; use vortex_layout::plan::physical::pipeline::Turn; use vortex_layout::segments::SegmentId; -use vortex_layout::session::LayoutSession; use vortex_session::VortexSession; use vortex_session::registry::ReadContext; @@ -40,11 +35,6 @@ static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() .with::() .with::() - .with::() - .with::() - .with::() - .with::() - .with::() }); #[global_allocator] diff --git a/vortex-layout/benches/zone_map_prune.rs b/vortex-layout/benches/zone_map_prune.rs index 565866825c0..ebd4ece8218 100644 --- a/vortex-layout/benches/zone_map_prune.rs +++ b/vortex-layout/benches/zone_map_prune.rs @@ -24,13 +24,11 @@ use vortex_array::aggregate_fn::fns::max::Max; use vortex_array::aggregate_fn::fns::min::Min; use vortex_array::aggregate_fn::fns::nan_count::NanCount; use vortex_array::aggregate_fn::fns::null_count::NullCount; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::expr::BoundExpression; use vortex_array::expr::Expression; use vortex_array::expr::eq; @@ -41,13 +39,11 @@ use vortex_array::expr::or; use vortex_array::expr::root; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_expr::stats::rewrite::BoundExpressionPruneExt; +use vortex_expr::stats::session::StatsSession; use vortex_layout::layouts::zoned::zone_map::ZoneMap; -use vortex_layout::session::LayoutSession; use vortex_session::VortexSession; use vortex_utils::aliases::hash_map::HashMap; @@ -61,13 +57,9 @@ fn main() { static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() - .with::() + .with::() }); /// Zone counts to sweep. The small case exposes per-call fixed cost, the large case exposes diff --git a/vortex-row/benches/row_encode.rs b/vortex-row/benches/row_encode.rs index c8cca5140d5..7bf91245e9e 100644 --- a/vortex-row/benches/row_encode.rs +++ b/vortex-row/benches/row_encode.rs @@ -36,17 +36,12 @@ use rand::distr::Alphanumeric; use rand::rngs::StdRng; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::arrays::listview::ListViewArray; use vortex_array::arrays::listview::ListViewArraySlotsExt; -use vortex_array::dtype::session::DTypeSession; -use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_row::RowEncoder; use vortex_session::VortexSession; @@ -58,15 +53,8 @@ static GLOBAL: MiMalloc = MiMalloc; const N: usize = 1_000; const LIST_LEN: usize = 8; -static SESSION: LazyLock = LazyLock::new(|| { - VortexSession::empty() - .with::() - .with::() - .with::() - .with::() - .with::() - .with::() -}); +static SESSION: LazyLock = + LazyLock::new(|| VortexSession::empty().with::()); fn main() { LazyLock::force(&SESSION); diff --git a/vortex-spatial/benches/area.rs b/vortex-spatial/benches/area.rs index 0b1b336dea7..d6f24e0e222 100644 --- a/vortex-spatial/benches/area.rs +++ b/vortex-spatial/benches/area.rs @@ -20,20 +20,41 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::MaskedArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::validity::Validity; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::area::SpatialArea; use vortex_spatial::test_harness::multipolygon_column; use vortex_spatial::test_harness::polygon_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); /// Sized so the multipolygon case, the slowest arm, stays inside the 1 ms per-iteration budget /// from `docs/developer-guide/benchmarking.md` under CodSpeed's CPU simulation. diff --git a/vortex-spatial/benches/binary_predicates.rs b/vortex-spatial/benches/binary_predicates.rs index f201572f037..6d8eee836a6 100644 --- a/vortex-spatial/benches/binary_predicates.rs +++ b/vortex-spatial/benches/binary_predicates.rs @@ -32,16 +32,24 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::MaskedArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::validity::Validity; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; use vortex_error::VortexResult; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::contains::SpatialContains; use vortex_spatial::scalar_fn::intersects::SpatialIntersects; use vortex_spatial::test_harness::point_column; use vortex_spatial::test_harness::polygon_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. @@ -53,7 +61,20 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); /// The ordinary arms use the same row count so results are comparable across shapes. A geometry /// predicate costs roughly a microsecond per row under CodSpeed's CPU simulation, which caps the diff --git a/vortex-spatial/benches/collect.rs b/vortex-spatial/benches/collect.rs index 346320ad195..2a49c32073b 100644 --- a/vortex-spatial/benches/collect.rs +++ b/vortex-spatial/benches/collect.rs @@ -21,9 +21,18 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ListArray; use vortex_array::arrays::PrimitiveArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::validity::Validity; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::collect::SpatialCollect; use vortex_spatial::scalar_fn::envelope::SpatialEnvelope; @@ -31,14 +40,26 @@ use vortex_spatial::test_harness::linestring_column; use vortex_spatial::test_harness::nullable_point_column; use vortex_spatial::test_harness::point_column; use vortex_spatial::test_harness::polygon_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); const ROWS: usize = 512; diff --git a/vortex-spatial/benches/convex_hull.rs b/vortex-spatial/benches/convex_hull.rs index 9192a3bc912..ae9f1a22f95 100644 --- a/vortex-spatial/benches/convex_hull.rs +++ b/vortex-spatial/benches/convex_hull.rs @@ -21,19 +21,40 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::MaskedArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::validity::Validity; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::convex_hull::SpatialConvexHull; use vortex_spatial::test_harness::multipoint_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); /// Hull cost under CodSpeed's CPU simulation is a few microseconds per row and grows with points /// per row, so each case sizes its row count to stay inside the 1 ms per-iteration budget from diff --git a/vortex-spatial/benches/distance.rs b/vortex-spatial/benches/distance.rs index db60eecf0a3..a6484f8ff43 100644 --- a/vortex-spatial/benches/distance.rs +++ b/vortex-spatial/benches/distance.rs @@ -20,22 +20,43 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::MaskedArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::validity::Validity; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; use vortex_error::VortexResult; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::distance::SpatialDistance; use vortex_spatial::test_harness::point_column; use vortex_spatial::test_harness::polygon_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); const POINT_ROWS: usize = 512; const POLYGON_ROWS: usize = 32; diff --git a/vortex-spatial/benches/envelope.rs b/vortex-spatial/benches/envelope.rs index bcf19454aaa..2a8f8b09c59 100644 --- a/vortex-spatial/benches/envelope.rs +++ b/vortex-spatial/benches/envelope.rs @@ -26,6 +26,15 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::envelope::SpatialEnvelope; use vortex_spatial::test_harness::MultiPolygonRings; @@ -34,7 +43,6 @@ use vortex_spatial::test_harness::multipolygon_column; use vortex_spatial::test_harness::nullable_multipolygon_column; use vortex_spatial::test_harness::nullable_point_column; use vortex_spatial::test_harness::point_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. @@ -46,7 +54,20 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); /// Every case has the same row count so results are comparable across shapes: differences then /// reflect per-row cost (nesting depth, validity handling) rather than input size. diff --git a/vortex-spatial/benches/length.rs b/vortex-spatial/benches/length.rs index 525d11f1bba..4735d059a16 100644 --- a/vortex-spatial/benches/length.rs +++ b/vortex-spatial/benches/length.rs @@ -22,19 +22,40 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::MaskedArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::memory::MemorySession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; use vortex_array::validity::Validity; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::length::SpatialLength; use vortex_spatial::test_harness::linestring_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); const ROWS: usize = 512; diff --git a/vortex-spatial/benches/make_line.rs b/vortex-spatial/benches/make_line.rs index 606f30f020c..d6225bad97a 100644 --- a/vortex-spatial/benches/make_line.rs +++ b/vortex-spatial/benches/make_line.rs @@ -23,19 +23,38 @@ use vortex_array::Canonical; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; +use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; +use vortex_array::dtype::session::DTypeSession; +use vortex_array::optimizer::kernels::KernelSession; +use vortex_array::scalar_fn::session::ScalarFnSession; +use vortex_arrow::ArrowSession; +use vortex_edition::EditionSession; +use vortex_edition::EnabledEditions; +use vortex_expr::stats::session::StatsSession; use vortex_session::VortexSession; use vortex_spatial::scalar_fn::make_line::SpatialMakeLine; use vortex_spatial::test_harness::nullable_point_column; use vortex_spatial::test_harness::point_column; -use vortex_spatial::test_harness::spatial_session; // Scalar function execution allocates its output inside the timed region, so use the vendored // allocator instead of measuring glibc differences between CodSpeed runner images. #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(spatial_session); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::() + .with::(); + vortex_spatial::initialize(&session); + session +}); const ROWS: usize = 512; diff --git a/vortex-tensor/benches/cosine_similarity.rs b/vortex-tensor/benches/cosine_similarity.rs index ac48d4d5fc8..a600b3c24f7 100644 --- a/vortex-tensor/benches/cosine_similarity.rs +++ b/vortex-tensor/benches/cosine_similarity.rs @@ -20,7 +20,6 @@ use vortex_array::ArrayRef; use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::ExtensionArray; use vortex_array::arrays::FixedSizeListArray; @@ -28,12 +27,9 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; use vortex_array::scalar::Scalar; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -42,11 +38,7 @@ use vortex_tensor::vector::Vector; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-tensor/benches/inner_product.rs b/vortex-tensor/benches/inner_product.rs index 4e8f934fc95..c8471f1ef3e 100644 --- a/vortex-tensor/benches/inner_product.rs +++ b/vortex-tensor/benches/inner_product.rs @@ -19,15 +19,11 @@ use mimalloc::MiMalloc; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::FixedSizeListArray; use vortex_array::arrays::MaskedArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -36,11 +32,7 @@ use vortex_tensor::vector::Vector; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex-tensor/benches/l2_norm.rs b/vortex-tensor/benches/l2_norm.rs index 0ba995f700c..fe6d2ecbff9 100644 --- a/vortex-tensor/benches/l2_norm.rs +++ b/vortex-tensor/benches/l2_norm.rs @@ -19,15 +19,11 @@ use mimalloc::MiMalloc; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::aggregate_fn::session::AggregateFnSession; use vortex_array::arrays::FixedSizeListArray; use vortex_array::arrays::MaskedArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::session::DTypeSession; use vortex_array::memory::MemorySession; use vortex_array::optimizer::kernels::KernelSession; -use vortex_array::scalar_fn::session::ScalarFnSession; -use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_session::VortexSession; @@ -36,11 +32,7 @@ use vortex_tensor::vector::Vector; static SESSION: LazyLock = LazyLock::new(|| { VortexSession::empty() - .with::() .with::() - .with::() - .with::() - .with::() .with::() }); diff --git a/vortex/benches/common_encoding_tree_throughput.rs b/vortex/benches/common_encoding_tree_throughput.rs index 41042ae3670..0d523c133e0 100644 --- a/vortex/benches/common_encoding_tree_throughput.rs +++ b/vortex/benches/common_encoding_tree_throughput.rs @@ -14,11 +14,11 @@ use divan::counter::BytesCount; use mimalloc::MiMalloc; use rand::RngExt; use rand::SeedableRng; -use vortex::VortexSessionDefault; use vortex::array::ArrayRef; use vortex::array::Canonical; use vortex::array::IntoArray; use vortex::array::VortexSessionExecute; +use vortex::array::aggregate_fn::session::AggregateFnSession; use vortex::array::arrays::DictArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::TemporalArray; @@ -26,26 +26,34 @@ use vortex::array::arrays::VarBinArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::arrays::varbin::VarBinArraySlotsExt; use vortex::array::builtins::ArrayBuiltins; +use vortex::array::memory::MemorySession; +use vortex::array::optimizer::kernels::KernelSession; use vortex::array::scalar::Scalar; +use vortex::array::session::ArraySession; use vortex::dtype::DType; use vortex::dtype::PType; +use vortex::encodings::alp; use vortex::encodings::alp::ALP; use vortex::encodings::alp::ALPArrayExt; use vortex::encodings::alp::ALPArraySlotsExt; use vortex::encodings::alp::alp_encode; +use vortex::encodings::datetime_parts; use vortex::encodings::datetime_parts::DateTimeParts; use vortex::encodings::datetime_parts::split_temporal; +use vortex::encodings::fastlanes; use vortex::encodings::fastlanes::BitPacked; use vortex::encodings::fastlanes::FoR; use vortex::encodings::fastlanes::FoRArray; use vortex::encodings::fastlanes::FoRArrayExt; use vortex::encodings::fastlanes::FoRArraySlotsExt; use vortex::encodings::fastlanes::FoRReferences; +use vortex::encodings::fsst; use vortex::encodings::fsst::FSST; use vortex::encodings::fsst::FSSTArrayExt; use vortex::encodings::fsst::FSSTArraySlotsExt; use vortex::encodings::fsst::fsst_compress; use vortex::encodings::fsst::fsst_train_compressor; +use vortex::encodings::runend; use vortex::encodings::runend::RunEnd; use vortex::encodings::runend::RunEndArraySlotsExt; use vortex::error::VortexExpect; @@ -61,7 +69,19 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(VortexSession::default); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::(); + alp::initialize(&session); + datetime_parts::initialize(&session); + fastlanes::initialize(&session); + fsst::initialize(&session); + runend::initialize(&session); + session +}); // Sized so the slowest tree decompression stays well under 1ms on CodSpeed. const NUM_VALUES: u64 = 2048; diff --git a/vortex/benches/single_encoding_throughput.rs b/vortex/benches/single_encoding_throughput.rs index de2ace23491..8ecd05892b5 100644 --- a/vortex/benches/single_encoding_throughput.rs +++ b/vortex/benches/single_encoding_throughput.rs @@ -13,29 +13,40 @@ use rand::RngExt; use rand::SeedableRng; use rand::prelude::IndexedRandom; use rand::rngs::StdRng; -use vortex::VortexSessionDefault; use vortex::array::Canonical; use vortex::array::ExecutionCtx; use vortex::array::IntoArray; +use vortex::array::aggregate_fn::session::AggregateFnSession; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::builders::dict::dict_encode; use vortex::array::builtins::ArrayBuiltins; use vortex::array::dtype::Nullability; +use vortex::array::memory::MemorySession; +use vortex::array::optimizer::kernels::KernelSession; +use vortex::array::session::ArraySession; use vortex::dtype::PType; +use vortex::editions::EditionSession; +use vortex::encodings::alp; use vortex::encodings::alp::RDEncoder; use vortex::encodings::alp::RDEncoderExt; use vortex::encodings::alp::alp_encode; +use vortex::encodings::fastlanes; use vortex::encodings::fastlanes::Delta; use vortex::encodings::fastlanes::DeltaData; use vortex::encodings::fastlanes::FoR; use vortex::encodings::fastlanes::delta_compress; +use vortex::encodings::fsst; use vortex::encodings::fsst::fsst_compress; use vortex::encodings::fsst::fsst_train_compressor; use vortex::encodings::pco::Pco; +use vortex::encodings::runend; use vortex::encodings::runend::RunEnd; +use vortex::encodings::sequence; use vortex::encodings::sequence::sequence_encode; +use vortex::encodings::zigzag; use vortex::encodings::zigzag::zigzag_encode; +use vortex::encodings::zstd; use vortex::encodings::zstd::Zstd; use vortex::encodings::zstd::ZstdData; use vortex_array::VortexSessionExecute; @@ -46,7 +57,22 @@ use vortex_session::VortexSession; #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; -static SESSION: LazyLock = LazyLock::new(VortexSession::default); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::() + .with::(); + alp::initialize(&session); + fastlanes::initialize(&session); + fsst::initialize(&session); + runend::initialize(&session); + sequence::initialize(&session); + zigzag::initialize(&session); + zstd::initialize(&session); + session +}); fn main() { LazyLock::force(&SESSION); diff --git a/vortex/benches/take_union.rs b/vortex/benches/take_union.rs index 5f43dae854b..645a346fc31 100644 --- a/vortex/benches/take_union.rs +++ b/vortex/benches/take_union.rs @@ -30,19 +30,23 @@ use mimalloc::MiMalloc; use rand::RngExt; use rand::SeedableRng; use rand::rngs::StdRng; -use vortex::VortexSessionDefault; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::RecursiveCanonical; use vortex::array::VortexSessionExecute; +use vortex::array::aggregate_fn::session::AggregateFnSession; use vortex::array::arrays::ListViewArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::UnionArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::dtype::UnionVariants; +use vortex::array::memory::MemorySession; +use vortex::array::optimizer::kernels::KernelSession; use vortex::array::scalar::Scalar; +use vortex::array::session::ArraySession; use vortex::array::validity::Validity; use vortex::buffer::Buffer; +use vortex::encodings::sparse; use vortex::encodings::sparse::Sparse; use vortex_session::VortexSession; @@ -54,7 +58,15 @@ fn main() { divan::main(); } -static SESSION: LazyLock = LazyLock::new(VortexSession::default); +static SESSION: LazyLock = LazyLock::new(|| { + let session = VortexSession::empty() + .with::() + .with::() + .with::() + .with::(); + sparse::initialize(&session); + session +}); const ARRAY_SIZE: usize = 100_000;