From c4a1163f572cda816b3fe9273ac79d81ffe75fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mak=20Naze=C4=8Di=C4=87-Andrlon?= Date: Fri, 17 Jan 2025 13:16:42 +1100 Subject: [PATCH] Output statistics before chunk indexes, like the others --- rust/src/sans_io/read.rs | 6 +++--- rust/src/write.rs | 22 +++++++++++----------- rust/tests/round_trip.rs | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/rust/src/sans_io/read.rs b/rust/src/sans_io/read.rs index 1c267590e..0011054ea 100644 --- a/rust/src/sans_io/read.rs +++ b/rust/src/sans_io/read.rs @@ -904,9 +904,9 @@ mod tests { op::MESSAGE_INDEX, op::DATA_END, op::CHANNEL, + op::STATISTICS, op::CHUNK_INDEX, op::CHUNK_INDEX, - op::STATISTICS, op::SUMMARY_OFFSET, op::SUMMARY_OFFSET, op::SUMMARY_OFFSET, @@ -988,9 +988,9 @@ mod tests { op::MESSAGE_INDEX, op::DATA_END, op::CHANNEL, + op::STATISTICS, op::CHUNK_INDEX, op::CHUNK_INDEX, - op::STATISTICS, op::SUMMARY_OFFSET, op::SUMMARY_OFFSET, op::SUMMARY_OFFSET, @@ -1034,9 +1034,9 @@ mod tests { op::MESSAGE_INDEX, op::DATA_END, op::CHANNEL, + op::STATISTICS, op::CHUNK_INDEX, op::CHUNK_INDEX, - op::STATISTICS, op::SUMMARY_OFFSET, op::SUMMARY_OFFSET, op::SUMMARY_OFFSET, diff --git a/rust/src/write.rs b/rust/src/write.rs index adc7a92c5..206c70559 100644 --- a/rust/src/write.rs +++ b/rust/src/write.rs @@ -982,6 +982,17 @@ impl Writer { }); } + if self.options.output_statistics { + let statistics_start = summary_end; + write_record(&mut ccw, &Record::Statistics(stats))?; + summary_end = posit(&mut ccw)?; + offsets.push(records::SummaryOffset { + group_opcode: op::STATISTICS, + group_start: statistics_start, + group_length: summary_end - statistics_start, + }); + } + if self.options.output_chunk_indexes && !chunk_indexes.is_empty() { // Write all chunk indexes. let chunk_indexes_start = summary_end; @@ -1024,17 +1035,6 @@ impl Writer { }); } - if self.options.output_statistics { - let statistics_start = summary_end; - write_record(&mut ccw, &Record::Statistics(stats))?; - summary_end = posit(&mut ccw)?; - offsets.push(records::SummaryOffset { - group_opcode: op::STATISTICS, - group_start: statistics_start, - group_length: summary_end - statistics_start, - }); - } - // Write the summary offsets we've been accumulating if self.options.output_summary_offsets { summary_offset_start = summary_end; diff --git a/rust/tests/round_trip.rs b/rust/tests/round_trip.rs index edc78a49e..6ec5bbc11 100644 --- a/rust/tests/round_trip.rs +++ b/rust/tests/round_trip.rs @@ -60,8 +60,8 @@ fn demo_round_trip_for_opts(opts: WriteOptions) -> Result<()> { match (i, offset.group_opcode) { (0, op::SCHEMA) => (), (1, op::CHANNEL) => (), - (2, op::CHUNK_INDEX) => (), - (3, op::STATISTICS) => (), + (2, op::STATISTICS) => (), + (3, op::CHUNK_INDEX) => (), _ => panic!("Summary offset {i} was {offset:?}"), };