Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
759d2f0
`ChunkComponents` now indexes over component identifier
Wumpf Sep 30, 2025
71b3e6e
Port re_chunk_store to lookup all its properties via component identi…
Wumpf Sep 30, 2025
cfbcda9
update re_query
Wumpf Oct 17, 2025
fed3575
update re_dataframe
Wumpf Oct 17, 2025
0145417
re_entity_db
Wumpf Oct 17, 2025
47d4eca
update re_tf
Wumpf Oct 17, 2025
2be5b36
re_viewer_context
Wumpf Oct 17, 2025
3c84184
re_sdk
Wumpf Oct 17, 2025
f80b908
rerun_c
Wumpf Oct 20, 2025
997a715
re_chunk_store_ui
Wumpf Oct 20, 2025
d934344
re_data_ui
Wumpf Oct 20, 2025
3552281
Add `all_component_identifiers` utility
Wumpf Oct 20, 2025
bf05e3b
viewport_blueprint
Wumpf Oct 20, 2025
35e40b2
re_viewport_blueprint
Wumpf Oct 20, 2025
f60e88f
variant_ui / re_component_ui
Wumpf Oct 20, 2025
71c78cd
re_view
Wumpf Oct 20, 2025
bab425b
re_selection_panel
Wumpf Oct 20, 2025
d578c66
re_time_panel
Wumpf Oct 20, 2025
a842522
re_recording_panel
Wumpf Oct 20, 2025
63c7ad0
re_viewport_blueprint
Wumpf Oct 20, 2025
ccd327a
re_view_spatial
Wumpf Oct 20, 2025
5f5b181
various space views
Wumpf Oct 20, 2025
a2e4abf
re_viewer
Wumpf Oct 20, 2025
06340fc
examples & snippets
Wumpf Oct 20, 2025
48af60b
rerun_py
Wumpf Oct 20, 2025
3c7e251
Update some snapshots
Wumpf Oct 20, 2025
d1fd07a
cargo shear
Wumpf Oct 20, 2025
3b8c2e6
`PendingRow` contains now `SerializedComponentBatch`
Wumpf Oct 21, 2025
ff98994
Use `SerializedComponentColumn` inside of `ChunkComponents`
Wumpf Oct 21, 2025
fbeaf50
better error handling in chunk iteration casts
Wumpf Oct 21, 2025
f43c889
various smaller issues - code comments, tests etc.
Wumpf Oct 21, 2025
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
3 changes: 1 addition & 2 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8549,7 +8549,7 @@ dependencies = [
"re_chunk_store",
"re_format",
"re_log_types",
"re_types",
"re_types_core",
"re_ui",
"re_viewer_context",
]
Expand Down Expand Up @@ -9676,7 +9676,6 @@ dependencies = [
"re_test_context",
"re_tracing",
"re_types",
"re_types_core",
"re_ui",
"re_viewer_context",
"re_viewport_blueprint",
Expand Down
4 changes: 2 additions & 2 deletions crates/store/re_chunk/examples/chunk_latest_at.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ fn main() -> anyhow::Result<()> {
let query = LatestAtQuery::new(TimelineName::new("frame"), 4);

// Find all relevant data for a query:
let chunk = chunk.latest_at(&query, &MyPoints::descriptor_points());
let chunk = chunk.latest_at(&query, MyPoints::descriptor_points().component);
eprintln!("{:?} @ {query:?}:\n{chunk}", MyPoints::descriptor_points());

// And then slice it as appropriate:
let chunk = chunk
.timeline_sliced(TimelineName::log_time())
.component_sliced(&MyPoints::descriptor_points());
.component_sliced(MyPoints::descriptor_points().component);
eprintln!("Sliced down to specific timeline and component:\n{chunk}");

Ok(())
Expand Down
4 changes: 2 additions & 2 deletions crates/store/re_chunk/examples/chunk_range.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ fn main() -> anyhow::Result<()> {
let query = RangeQuery::new(TimelineName::new("frame"), AbsoluteTimeRange::EVERYTHING);

// Find all relevant data for a query:
let chunk = chunk.range(&query, &MyPoints::descriptor_points());
let chunk = chunk.range(&query, MyPoints::descriptor_points().component);
eprintln!("{:?} @ {query:?}:\n{chunk}", MyPoints::descriptor_points());

// And then slice it as appropriate:
let chunk = chunk
.timeline_sliced(TimelineName::log_time())
.component_sliced(&MyPoints::descriptor_points());
.component_sliced(MyPoints::descriptor_points().component);
eprintln!("Sliced down to specific timeline and component:\n{chunk}");

Ok(())
Expand Down
252 changes: 166 additions & 86 deletions crates/store/re_chunk/src/batcher.rs

Large diffs are not rendered by default.

52 changes: 24 additions & 28 deletions crates/store/re_chunk/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use nohash_hasher::IntMap;
use re_log_types::{EntityPath, NonMinI64, TimePoint, Timeline, TimelineName};
use re_types_core::{AsComponents, ComponentBatch, ComponentDescriptor, SerializedComponentBatch};

use crate::{Chunk, ChunkId, ChunkResult, RowId, TimeColumn, chunk::ChunkComponents};
use crate::{Chunk, ChunkId, ChunkResult, RowId, TimeColumn};

// ---

Expand Down Expand Up @@ -297,16 +297,14 @@ impl ChunkBuilder {

let components = {
re_tracing::profile_scope!("components");
ChunkComponents(
components
.into_iter()
.filter_map(|(component_desc, arrays)| {
let arrays = arrays.iter().map(|array| array.as_deref()).collect_vec();
re_arrow_util::arrays_to_list_array_opt(&arrays)
.map(|list_array| (component_desc, list_array))
})
.collect(),
)
components
.into_iter()
.filter_map(|(component_desc, arrays)| {
let arrays = arrays.iter().map(|array| array.as_deref()).collect_vec();
re_arrow_util::arrays_to_list_array_opt(&arrays)
.map(|list_array| (component_desc, list_array))
})
.collect()
};

Chunk::from_native_row_ids(id, entity_path, None, &row_ids, timelines, components)
Expand Down Expand Up @@ -350,23 +348,21 @@ impl ChunkBuilder {
.map(|(timeline, time_column)| (timeline, time_column.build()))
.collect(),
{
ChunkComponents(
components
.into_iter()
.filter_map(|(component_desc, arrays)| {
let arrays = arrays.iter().map(|array| array.as_deref()).collect_vec();
// If we know the datatype in advance, we're able to keep even fully sparse
// columns around.
if let Some(datatype) = datatypes.get(&component_desc) {
re_arrow_util::arrays_to_list_array(datatype.clone(), &arrays)
.map(|list_array| (component_desc, list_array))
} else {
re_arrow_util::arrays_to_list_array_opt(&arrays)
.map(|list_array| (component_desc, list_array))
}
})
.collect(),
)
components
.into_iter()
.filter_map(|(component_desc, arrays)| {
let arrays = arrays.iter().map(|array| array.as_deref()).collect_vec();
// If we know the datatype in advance, we're able to keep even fully sparse
// columns around.
if let Some(datatype) = datatypes.get(&component_desc) {
re_arrow_util::arrays_to_list_array(datatype.clone(), &arrays)
.map(|list_array| (component_desc, list_array))
} else {
re_arrow_util::arrays_to_list_array_opt(&arrays)
.map(|list_array| (component_desc, list_array))
}
})
.collect()
},
)
}
Expand Down
Loading
Loading