Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
441 changes: 244 additions & 197 deletions Cargo.lock

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ ahash = "0.8"
anyhow = { version = "1.0", default-features = false }
argh = "0.1.13"
array-init = "2.1"
arrow = { version = "55.2", default-features = false }
arrow = { version = "56.1", default-features = false }
async-stream = "0.3"
async-trait = "0.1.89"
axum = "0.8.6"
Expand Down Expand Up @@ -215,10 +215,10 @@ convert_case = "0.6.0"
criterion = "0.5.0"
cros-codecs = "0.0.6"
crossbeam = "0.8.0"
datafusion = { version = "49.0.2", default-features = false, features = [
datafusion = { version = "50.1.0", default-features = false, features = [
# NOTE: we enable the same features everywhere
# because otherwise we will recompile datafusion all the time based on our current compile target.
# The features here are the same as in https://github.com/lancedb/lance/blob/v0.36.0/Cargo.toml#L99-L107
# The features here are the same as in https://github.com/lancedb/lance/blob/v0.38.0/Cargo.toml#L99-L107
# This is very hacky, and I don't like it.
"crypto_expressions",
"datetime_expressions",
Expand All @@ -228,7 +228,7 @@ datafusion = { version = "49.0.2", default-features = false, features = [
"string_expressions",
"unicode_expressions",
] }
datafusion-ffi = "49.0.2"
datafusion-ffi = "50.1.0"
directories = "6.0"
document-features = "0.2.11"
econtext = "0.2.0" # Prints error contexts on crashes
Expand Down Expand Up @@ -261,7 +261,7 @@ itertools = "0.14.0"
jiff = { version = "0.2.15", features = ["js"] }
js-sys = "0.3.77"
jsonwebtoken = { version = "9.3", default-features = false }
lance = { version = "0.36.0", default-features = false } # When you update this, also update the list of features enabled for `datafusion` (~50 lines up)
lance = { version = "0.38.2", default-features = false } # When you update this, also update the list of features enabled for `datafusion` (~50 lines up)
libc = "0.2.176"
linked-hash-map = { version = "0.5.6", default-features = false }
log = "0.4.28"
Expand All @@ -281,15 +281,15 @@ nohash-hasher = "0.2.0"
notify = { version = "8.2", features = ["macos_kqueue"] }
num-derive = "0.4.2"
num-traits = "0.2.19"
numpy = "0.24.0"
numpy = "0.25.0"
objc2-app-kit = "0.3.2"
opentelemetry = { version = "0.31.0", features = ["metrics"] }
opentelemetry-appender-tracing = "0.31.0"
opentelemetry-otlp = "0.31.0"
opentelemetry_sdk = { version = "0.31.0", features = ["rt-tokio"] }
ordered-float = "5.1.0"
parking_lot = "0.12.5"
parquet = { version = "55.2", default-features = false }
parquet = { version = "56.1", default-features = false }
paste = "1.0"
pathdiff = "0.2.3"
percent-encoding = "2.3"
Expand All @@ -309,8 +309,8 @@ prost-types = "0.14.1"
protoc-prebuilt = "0.3.0"
puffin = "0.19.1"
puffin_http = "0.16.1"
pyo3 = "0.24.2"
pyo3-build-config = "0.24.2"
pyo3 = "0.25.1"
pyo3-build-config = "0.25.1"
quote = "1.0"
rand = { version = "0.9.2", default-features = false, features = ["small_rng", "thread_rng"] }
rand_distr = { version = "0.5.1", default-features = false }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ ChunkStore {
config: ChunkStoreConfig { enable_changelog: true, chunk_max_bytes: 393216, chunk_max_rows: 4096, chunk_max_rows_if_unsorted: 1024 }
stats: {
num_chunks: 1
total_size_bytes: 1.2 KiB
total_size_bytes: 1.1 KiB
num_rows: 1
num_events: 2
}
chunks: [
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /this/that │
│ * heap_size_bytes: 992
│ * heap_size_bytes: 944
│ * id: chunk_0000000000661EFDf2e3b19f7c045f15 │
│ * version: [**REDACTED**] │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ expression: printed
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /my/entity │
│ * heap_size_bytes: 416
│ * heap_size_bytes: 368
│ * id: chunk_00000000000000010000000000000002 │
│ * version: 0.1.1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down Expand Up @@ -74,7 +74,7 @@ expression: printed
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /my/other/entity │
│ * heap_size_bytes: 416
│ * heap_size_bytes: 368
│ * id: chunk_00000000000000010000000000000004 │
│ * version: 0.1.1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down Expand Up @@ -118,7 +118,7 @@ expression: printed
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /my/entity │
│ * heap_size_bytes: 416
│ * heap_size_bytes: 368
│ * id: chunk_00000000000000020000000000000002 │
│ * version: 0.1.1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down Expand Up @@ -162,7 +162,7 @@ expression: printed
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /my/entity │
│ * heap_size_bytes: 416
│ * heap_size_bytes: 368
│ * id: chunk_00000000000000030000000000000002 │
│ * version: 0.1.1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down Expand Up @@ -206,7 +206,7 @@ expression: printed
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /another/one │
│ * heap_size_bytes: 416
│ * heap_size_bytes: 368
│ * id: chunk_00000000000000030000000000000004 │
│ * version: 0.1.1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down Expand Up @@ -250,7 +250,7 @@ expression: printed
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ METADATA: │
│ * entity_path: /yet/another/one │
│ * heap_size_bytes: 416
│ * heap_size_bytes: 368
│ * id: chunk_00000000000000030000000000000006 │
│ * version: 0.1.1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
Expand Down
2 changes: 2 additions & 0 deletions crates/store/re_types_core/src/reflection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ pub fn generic_placeholder_for_datatype(
))
}

DataType::Decimal32(_, _) => Arc::new(array::Decimal32Array::from_iter([0])),
DataType::Decimal64(_, _) => Arc::new(array::Decimal64Array::from_iter([0])),
DataType::Decimal128(_, _) => Arc::new(array::Decimal128Array::from_iter([0])),

DataType::Decimal256(_, _) => Arc::new(array::Decimal256Array::from_iter([
Expand Down
2 changes: 2 additions & 0 deletions crates/utils/re_arrow_util/src/format_data_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ impl std::fmt::Display for DisplayDatatype<'_> {
DataType::Dictionary(key, value) => {
return write!(f, "Dictionary{{{}: {}}}", Self(key), Self(value));
}
DataType::Decimal32(_, _) => "Decimal32",
DataType::Decimal64(_, _) => "Decimal64",
DataType::Decimal128(_, _) => "Decimal128",
DataType::Decimal256(_, _) => "Decimal256",
DataType::BinaryView => "BinaryView",
Expand Down
2 changes: 2 additions & 0 deletions crates/utils/re_byte_size/src/arrow_sizes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ impl SizeBytes for DataType {
| Self::Utf8
| Self::LargeUtf8
| Self::BinaryView
| Self::Decimal32(_, _)
| Self::Decimal64(_, _)
| Self::Decimal128(_, _)
| Self::Decimal256(_, _)
| Self::FixedSizeBinary(_)
Expand Down
2 changes: 1 addition & 1 deletion crates/viewer/re_arrow_ui/src/show_index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ fn make_ui<'a>(
| DataType::Utf8View | DataType::BinaryView
| DataType::Date32 | DataType::Date64 | DataType::Time32(_) | DataType::Time64(_)
| DataType::Duration(_) | DataType::Interval(_)
| DataType::Decimal128(_, _) | DataType::Decimal256(_, _)
| DataType::Decimal32(_, _) | DataType::Decimal64(_, _) | DataType::Decimal128(_, _) | DataType::Decimal256(_, _)
=> {
show_arrow_builtin(array, options)
}
Expand Down
1 change: 1 addition & 0 deletions crates/viewer/re_dataframe_ui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ egui_table.workspace = true
itertools.workspace = true
jiff.workspace = true
nohash-hasher.workspace = true
ordered-float.workspace = true
parking_lot.workspace = true
serde.workspace = true
strum.workspace = true
Expand Down
8 changes: 4 additions & 4 deletions crates/viewer/re_dataframe_ui/src/filters/boolean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use super::{Filter, FilterError, FilterUiAction};
/// Filter for non-nullable boolean columns.
///
/// This represents both the filter itself, and the state of the corresponding UI.
#[derive(Debug, Clone, Default, PartialEq, Eq)]
#[derive(Debug, Clone, Default, PartialEq, Eq, Hash)]
pub enum NonNullableBooleanFilter {
#[default]
IsTrue,
Expand Down Expand Up @@ -87,7 +87,7 @@ impl SyntaxHighlighting for NonNullableBooleanFilter {
}
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, strum::VariantArray)]
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, strum::VariantArray)]
#[expect(clippy::enum_variant_names)]
pub enum NullableBooleanValue {
#[default]
Expand All @@ -106,7 +106,7 @@ impl NullableBooleanValue {
}
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, strum::VariantArray)]
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, strum::VariantArray)]
pub enum NullableBooleanOperator {
#[default]
Is,
Expand All @@ -125,7 +125,7 @@ impl std::fmt::Display for NullableBooleanOperator {
/// Filter for nullable boolean columns.
///
/// This represents both the filter itself, and the state of the corresponding UI.
#[derive(Clone, Default, PartialEq, Eq)]
#[derive(Clone, Default, PartialEq, Eq, Hash)]
pub struct NullableBooleanFilter {
value: NullableBooleanValue,
operator: NullableBooleanOperator,
Expand Down
2 changes: 1 addition & 1 deletion crates/viewer/re_dataframe_ui/src/filters/column_filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ impl Nullability {
}

/// A filter applied to a table's column.
#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ColumnFilter {
pub field: FieldRef,
pub filter: TypedFilter,
Expand Down
2 changes: 1 addition & 1 deletion crates/viewer/re_dataframe_ui/src/filters/filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ pub trait Filter {
/// need them (e.g., to test blueprint inequality before triggering a costly table update).
/// The last item is related to how the filter UI is implemented using the `SyntaxHighlighting`
/// machinery.
#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum TypedFilter {
NullableBoolean(NullableBooleanFilter),
NonNullableBoolean(NonNullableBooleanFilter),
Expand Down
5 changes: 3 additions & 2 deletions crates/viewer/re_dataframe_ui/src/filters/filter_udf.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::any::Any;
use std::fmt::Debug;
use std::hash::Hash;
use std::sync::Arc;

use arrow::array::{ArrayRef, BooleanArray, ListArray, as_list_array};
Expand All @@ -14,7 +15,7 @@ use datafusion::logical_expr::{
///
/// Note that a filter UDF is only a _building block_ towards creating a final expression for
/// datafusion. See [`super::Filter::as_filter_expression`] in its implementation for more details.
pub trait FilterUdf: Any + Clone + Debug + Send + Sync {
pub trait FilterUdf: Any + Clone + Debug + Send + Sync + Hash + PartialEq + Eq {
/// The scalar datafusion type signature for this UDF.
///
/// The list version will automatically be accepted as well, see `FilterUdfWrapper::signature`.
Expand Down Expand Up @@ -90,7 +91,7 @@ pub trait FilterUdf: Any + Clone + Debug + Send + Sync {
/// This serves two purposes:
/// 1) Allow blanket implementation of [`ScalarUDFImpl`] (orphan rule)
/// 2) Cache the [`Signature`] (needed for [`ScalarUDFImpl::signature`])
#[derive(Debug)]
#[derive(Debug, Eq, PartialEq, Hash, Clone)]
struct FilterUdfWrapper<T: FilterUdf> {
inner: T,
signature: Signature,
Expand Down
Loading
Loading