diff --git a/vortex-array/src/aggregate_fn/fns/min_max/mod.rs b/vortex-array/src/aggregate_fn/fns/min_max/mod.rs index 90b5c1040b1..1c23e89221d 100644 --- a/vortex-array/src/aggregate_fn/fns/min_max/mod.rs +++ b/vortex-array/src/aggregate_fn/fns/min_max/mod.rs @@ -417,10 +417,8 @@ impl AggregateFnVTable for MinMax { Canonical::Decimal(d) => accumulate_decimal(partial, d, ctx), Canonical::Extension(e) => accumulate_extension(partial, e, ctx), Canonical::Null(_) => Ok(()), - Canonical::Union(_) => { - todo!("TODO(connor)[Union]: implement min_max for Union arrays") - } - Canonical::Struct(_) + Canonical::Union(_) + | Canonical::Struct(_) | Canonical::List(_) | Canonical::Map(_) | Canonical::FixedSizeList(_) diff --git a/vortex-bench/sql/vortex/README.md b/vortex-bench/sql/vortex/README.md index 793f7fb0f67..e215394534d 100644 --- a/vortex-bench/sql/vortex/README.md +++ b/vortex-bench/sql/vortex/README.md @@ -4,14 +4,16 @@ A small suite of microbenchmark queries targeting Vortex-specific scan paths, ru **every PR commit** (unlike the label-gated suites) with a high iteration count, so it is the most sensitive — and most frequently seen — benchmark comment. -[`init.sql`](./init.sql) generates a 25M-row two-column table; the numbered queries each -pin down one scan behavior: +[`init.sql`](./init.sql) generates a 2.5B-row three-column table (`id`, `col`, `col2`); the +numbered queries each pin down one scan behavior: - [`0_sum-with-filter.sql`](./0_sum-with-filter.sql): a filtered aggregation that forces a linear scan today; once statistics are propagated to arrays it should use zone maps instead of decoding every row. - [`1_sum.sql`](./1_sum.sql): an unfiltered aggregation that should eventually be answered from footer statistics without decoding data. +- [`2_sum-range.sql`](./2_sum-range.sql): a range filter on `id` that should prune most + zone maps and only fully decode the two zones that overlap the bounds. ## CI variant diff --git a/vortex-ffi/src/session.rs b/vortex-ffi/src/session.rs index f0679a7c4c9..2af3d997444 100644 --- a/vortex-ffi/src/session.rs +++ b/vortex-ffi/src/session.rs @@ -34,7 +34,9 @@ pub unsafe extern "C-unwind" fn vx_session_new() -> *mut vx_session { vx_session_new_with(|session| session) } -/// Clone a vx_session +/// Clone a Vortex session, returning an owned copy. +/// +/// The caller is responsible for freeing the session with [`vx_session_free`]. #[unsafe(no_mangle)] pub unsafe extern "C-unwind" fn vx_session_clone(session: *const vx_session) -> *mut vx_session { let session = vx_session::as_ref(session); diff --git a/vortex-python/python/vortex/_lib/file.pyi b/vortex-python/python/vortex/_lib/file.pyi index 901e0323eec..5e499b85efc 100644 --- a/vortex-python/python/vortex/_lib/file.pyi +++ b/vortex-python/python/vortex/_lib/file.pyi @@ -9,7 +9,7 @@ from typing_extensions import override from vortex.type_aliases import IntoProjection -from . import CosStore, HfStore +from . import CosStore, GoosefsStore, HfStore from .arrays import Array from .dataset import VortexDataset from .dtype import DType @@ -61,6 +61,6 @@ class VortexFile: def open( path: str, *, - store: ObjectStore | CosStore | HfStore | None = None, + store: ObjectStore | CosStore | GoosefsStore | HfStore | None = None, without_segment_cache: bool = False, ) -> VortexFile: ... diff --git a/vortex-python/python/vortex/file.py b/vortex-python/python/vortex/file.py index a78a59ead1c..5fcd8b713ae 100644 --- a/vortex-python/python/vortex/file.py +++ b/vortex-python/python/vortex/file.py @@ -19,6 +19,7 @@ AzureStore, CosStore, GCSStore, + GoosefsStore, HfStore, HTTPStore, LocalStore, @@ -34,7 +35,7 @@ def open( path: str, *, - store: AzureStore | CosStore | GCSStore | HfStore | HTTPStore | LocalStore | MemoryStore | S3Store | None = None, + store: AzureStore | CosStore | GCSStore | GoosefsStore | HfStore | HTTPStore | LocalStore | MemoryStore | S3Store | None = None, without_segment_cache: bool = False, ) -> VortexFile: """