From dd3432e6ca81358f6ded4d55ba9dc4e70b1ab58c Mon Sep 17 00:00:00 2001 From: "Lei, HUANG" <6406592+v0y4g3r@users.noreply.github.com> Date: Mon, 1 Sep 2025 17:53:08 +0800 Subject: [PATCH] chore: change encode raw values signature (#6869) * chore/change-encode-raw-values-sig: ### Update Sparse Encoding to Use Byte Slices - **`bench_sparse_encoding.rs`**: Modified the `encode_raw_tag_value` function to use byte slices instead of `Bytes` for tag values. - **`sparse.rs`**: Updated the `encode_raw_tag_value` method in `SparsePrimaryKeyCodec` to accept byte slices (`&[u8]`) instead of `Bytes`. Adjusted related test cases to reflect this change. Signed-off-by: Lei, HUANG * chore/change-encode-raw-values-sig: ### Add `Clear` Trait Implementation for Byte Slices - Implemented the `Clear` trait for byte slices (`&[u8]`) in `repeated_field.rs` to enhance trait coverage and provide a default clear operation for byte slice types. Signed-off-by: Lei, HUANG --------- Signed-off-by: Lei, HUANG --- src/mito-codec/benches/bench_sparse_encoding.rs | 2 +- src/mito-codec/src/row_converter/sparse.rs | 8 ++++---- src/servers/src/repeated_field.rs | 4 ++++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/mito-codec/benches/bench_sparse_encoding.rs b/src/mito-codec/benches/bench_sparse_encoding.rs index b9dc7f3fa2..9841f55266 100644 --- a/src/mito-codec/benches/bench_sparse_encoding.rs +++ b/src/mito-codec/benches/bench_sparse_encoding.rs @@ -72,7 +72,7 @@ fn encode_sparse(c: &mut Criterion) { .unwrap(); codec .encode_raw_tag_value( - tags.iter().map(|(c, b)| (*c, b)), + tags.iter().map(|(c, b)| (*c, &b[..])), &mut buffer_by_raw_encoding, ) .unwrap(); diff --git a/src/mito-codec/src/row_converter/sparse.rs b/src/mito-codec/src/row_converter/sparse.rs index 114e56b92e..5b65ba2ca8 100644 --- a/src/mito-codec/src/row_converter/sparse.rs +++ b/src/mito-codec/src/row_converter/sparse.rs @@ -15,7 +15,7 @@ use std::collections::{HashMap, HashSet}; use std::sync::Arc; -use bytes::{BufMut, Bytes}; +use bytes::BufMut; use common_recordbatch::filter::SimpleFilterEvaluator; use datatypes::prelude::ConcreteDataType; use datatypes::value::{Value, ValueRef}; @@ -179,7 +179,7 @@ impl SparsePrimaryKeyCodec { pub fn encode_raw_tag_value<'a, I>(&self, row: I, buffer: &mut Vec) -> Result<()> where - I: Iterator, + I: Iterator, { for (tag_column_id, tag_value) in row { let value_len = tag_value.len(); @@ -568,11 +568,11 @@ mod tests { .unwrap(); let tags: Vec<_> = tags .into_iter() - .map(|(col_id, tag_value)| (col_id, Bytes::from_static(tag_value.as_bytes()))) + .map(|(col_id, tag_value)| (col_id, tag_value.as_bytes())) .collect(); codec .encode_raw_tag_value( - tags.iter().map(|(c, b)| (*c, b)), + tags.iter().map(|(c, b)| (*c, *b)), &mut buffer_by_raw_encoding, ) .unwrap(); diff --git a/src/servers/src/repeated_field.rs b/src/servers/src/repeated_field.rs index 6bc20b07c2..701ea19e05 100644 --- a/src/servers/src/repeated_field.rs +++ b/src/servers/src/repeated_field.rs @@ -38,6 +38,10 @@ pub trait Clear { fn clear(&mut self); } +impl Clear for &[u8] { + fn clear(&mut self) {} +} + impl Clear for Option { fn clear(&mut self) { self.take();