From 5afa151d62bc0394341ecefd11a155cbfba40eee Mon Sep 17 00:00:00 2001 From: discord9 Date: Thu, 29 Oct 2026 20:26:07 +0800 Subject: [PATCH] perf(mito2): compare raw series keys without copying them The ordered-key guard built a Buffer for every record before checking whether a previous package key existed to compare against. Read the slices instead, so the common case allocates nothing. Signed-off-by: discord9 --- src/mito2/src/read/series_scan/raw.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/mito2/src/read/series_scan/raw.rs b/src/mito2/src/read/series_scan/raw.rs index 602be2de868..7c0de7b4d3c 100644 --- a/src/mito2/src/read/series_scan/raw.rs +++ b/src/mito2/src/read/series_scan/raw.rs @@ -324,16 +324,15 @@ pub(crate) fn make_stream( held = Some(record); break; } - if ordering == SeriesOrdering::KeyThenTime { - let first_key = primary_key_at_row(&record.batch, 0).map(Buffer::from); - if let (Some(previous), Some(first)) = (last_package_key.as_ref(), first_key) - && first.as_slice() <= previous.as_slice() - { - upstream_error = Some(InvalidRecordBatchSnafu { - reason: "legacy series primary keys are not strictly increasing".to_string(), - }.build()); - break; - } + if ordering == SeriesOrdering::KeyThenTime + && let Some(previous) = last_package_key.as_ref() + && let Some(first) = primary_key_at_row(&record.batch, 0) + && first <= previous.as_slice() + { + upstream_error = Some(InvalidRecordBatchSnafu { + reason: "legacy series primary keys are not strictly increasing".to_string(), + }.build()); + break; } buffered_rows += record.batch.num_rows(); if record.ends_package