This is an automated email from the ASF dual-hosted git repository. alamb pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/main by this push: new 138368cc9c fix: reset the offset of 'file_for_view' (#8381) 138368cc9c is described below commit 138368cc9c9aec2fd40afe2050b1054caaa3dd55 Author: Van De Bio <trevora...@gmail.com> AuthorDate: Sat Sep 20 02:58:26 2025 +0800 fix: reset the offset of 'file_for_view' (#8381) # Which issue does this PR close? - Closes #8380 # Rationale for this change It will fix the example to help user get the result of utf8view performance. # What changes are included in this PR? Reset the file handle's offset before using it in next time. # Are these changes tested? ``` arrow-avro/examples/read_with_utf8view.rs ``` The example can run successfully ```shell (base) ➜ arrow-avro git:(fix/example_of_utf8view) cargo run --package arrow-avro --example read_with_utf8view -- test/data/nested_record_reuse.avro Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.30s Running `/Users/trevor.wang/Workspace/rust/fix-arrow-rs/arrow-rs/target/debug/examples/read_with_utf8view test/data/nested_record_reuse.avro` Read 2 rows from test/data/nested_record_reuse.avro Reading with StringArray: 2.095417ms Reading with StringViewArray: 179.333µs StringViewArray was 11.68x faster ``` # Are there any user-facing changes? Every user will get the right result and run the example to get the perfomrance data. --------- Co-authored-by: Trevor Wang <trevor.w...@shopee.com> --- arrow-avro/examples/read_with_utf8view.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arrow-avro/examples/read_with_utf8view.rs b/arrow-avro/examples/read_with_utf8view.rs index 707be57516..85b07c8d03 100644 --- a/arrow-avro/examples/read_with_utf8view.rs +++ b/arrow-avro/examples/read_with_utf8view.rs @@ -22,7 +22,7 @@ use std::env; use std::fs::File; -use std::io::BufReader; +use std::io::{BufReader, Seek, SeekFrom}; use std::time::Instant; use arrow_array::{RecordBatch, StringArray, StringViewArray}; @@ -39,7 +39,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { }; let file = File::open(file_path)?; - let file_for_view = file.try_clone()?; + let mut file_for_view = file.try_clone()?; let start = Instant::now(); let reader = BufReader::new(file); @@ -48,6 +48,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { let batches: Vec<RecordBatch> = avro_reader.collect::<Result<_, _>>()?; let regular_duration = start.elapsed(); + file_for_view.seek(SeekFrom::Start(0))?; let start = Instant::now(); let reader_view = BufReader::new(file_for_view); let avro_reader_view = ReaderBuilder::new()