Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
c055653
first pass
May 22, 2026
dbc91f2
fix
May 22, 2026
898e891
second claude pass
May 22, 2026
5eb5930
small fixes
May 26, 2026
8803dfa
fix
May 26, 2026
a152842
fix
May 26, 2026
41b927f
clean mod
mhk197 May 27, 2026
0ac23dc
fix writer
mhk197 May 27, 2026
89878d9
fix writer
mhk197 May 27, 2026
0532fd9
fix
mhk197 May 27, 2026
75b6bed
improve projection eval
mhk197 May 27, 2026
dd0b19a
projection evaluation
mhk197 May 27, 2026
b0dcd84
tests
mhk197 May 27, 2026
ac4c949
tests
mhk197 May 27, 2026
49b6cf9
fix test
mhk197 May 27, 2026
15d69bc
skip pruning eval
mhk197 May 27, 2026
bf5d817
few more tests
mhk197 May 27, 2026
367c736
lint fix
mhk197 May 28, 2026
eeb0d9f
fix test
mhk197 May 28, 2026
1cb121c
quick fix
mhk197 May 28, 2026
84d3d7f
add anylist matcher
mhk197 May 28, 2026
e7a5f9c
read validity with all-true mask, not caller's mask
mhk197 May 28, 2026
5667100
narrow elements io for sparse mask instead of defering filtering
mhk197 May 28, 2026
1bd0cc2
shortcut on whole-chunk unmasked reads
mhk197 May 28, 2026
4241319
add required fallback to ListLayoutStrategy for non-list input
mhk197 Jun 17, 2026
114cb2a
fmt
mhk197 Jun 17, 2026
798821d
cleanup
mhk197 Jun 17, 2026
6b42aa8
fix rebase conflicts
mhk197 Jun 17, 2026
cf65b6f
use ListLayoutStrategy as default leaf under unstable_encodings
mhk197 Jun 17, 2026
5a2cd66
recurse into nested lists
mhk197 Jun 17, 2026
066adb1
fix: update ListLayout::build to use LayoutBuildContext after trait c…
mhk197 Jun 22, 2026
f6e31e8
comments
mhk197 Jun 22, 2026
7be5695
fix
mhk197 Jun 22, 2026
4635b22
clean up writer
mhk197 Jun 23, 2026
c378bbc
Improve list reader
mhk197 Jun 23, 2026
63dd0fe
Fix list docs
mhk197 Jun 23, 2026
21826b0
Add list filter evaluation
mhk197 Jun 23, 2026
e6c3fa4
Read list lengths from list layout offsets
mhk197 Jun 29, 2026
43de757
Move list expression planning to expr module
mhk197 Jul 1, 2026
abcb83d
Fix list layout checks after rebase
mhk197 Jul 1, 2026
768146e
Remove list projection path labels
mhk197 Jul 1, 2026
ebbac66
Refine list expression child classification
mhk197 Jul 1, 2026
b41e81f
bench
mhk197 Jul 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 21 additions & 2 deletions vortex-file/src/strategy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ use vortex_layout::layouts::compressed::CompressingStrategy;
use vortex_layout::layouts::compressed::CompressorPlugin;
use vortex_layout::layouts::dict::writer::DictStrategy;
use vortex_layout::layouts::flat::writer::FlatLayoutStrategy;
#[cfg(feature = "unstable_encodings")]
use vortex_layout::layouts::list::writer::ListLayoutStrategy;
use vortex_layout::layouts::repartition::RepartitionStrategy;
use vortex_layout::layouts::repartition::RepartitionWriterOptions;
use vortex_layout::layouts::table::TableStrategy;
Expand Down Expand Up @@ -242,8 +244,25 @@ impl WriteStrategyBuilder {
Arc::new(FlatLayoutStrategy::default())
};

// 7. for each chunk create a flat layout
let chunked = ChunkedLayoutStrategy::new(Arc::clone(&flat));
// 7. for each chunk create a layout. Under the `unstable_encodings` feature, list-typed
// chunks route through `ListLayoutStrategy` (separately-addressable elements/offsets/
// validity sub-layouts; non-list chunks fall through its built-in fallback to `flat`).
// Nested lists (`list<list<...>>`) recurse, shredding each level into its own
// `ListLayout`. Otherwise everything goes through the flat strategy.
#[cfg(feature = "unstable_encodings")]
let leaf: Arc<dyn LayoutStrategy> = Arc::new(
// Thread the configured `flat` (which carries `allow_encodings` / any custom flat
// override) through every child; list elements still recurse into a nested ListLayout.
ListLayoutStrategy::default()
.with_elements(Arc::clone(&flat))
.with_offsets(Arc::clone(&flat))
.with_validity(Arc::clone(&flat))
.with_fallback(Arc::clone(&flat)),
);
#[cfg(not(feature = "unstable_encodings"))]
let leaf: Arc<dyn LayoutStrategy> = Arc::clone(&flat);

let chunked = ChunkedLayoutStrategy::new(leaf);
// 6. buffer chunks so they end up with closer segment ids physically
let buffered = BufferedStrategy::new(chunked, 2 * ONE_MEG); // 2MB

Expand Down
12 changes: 12 additions & 0 deletions vortex-layout/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,18 @@ vortex-session = { workspace = true }
vortex-utils = { workspace = true, features = ["dashmap"] }

[dev-dependencies]
divan = { workspace = true }
futures = { workspace = true, features = ["executor"] }
insta = { workspace = true }
rand = { workspace = true }
rstest = { workspace = true }
temp-env = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true, features = ["rt", "macros"] }
vortex-alp = { workspace = true }
vortex-array = { path = "../vortex-array", features = ["_test-harness"] }
vortex-fastlanes = { workspace = true }
vortex-fsst = { workspace = true }
vortex-io = { path = "../vortex-io", features = ["tokio"] }

[features]
Expand All @@ -68,5 +75,10 @@ tokio = ["dep:tokio", "vortex-error/tokio"]
[lints]
workspace = true

[[bench]]
name = "list_vs_flat"
harness = false
test = false

[package.metadata.cargo-machete]
ignored = ["uuid"]
Loading
Loading