Skip to content

Commit eacaa53

Browse files
committed
move raw format envelope mismatch check to error path to avoid double JSON parse
1 parent 996a315 commit eacaa53

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

crates/adapters/src/format/json/input.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,17 @@ impl Parser for JsonParser {
461461
self.apply_update::<WeightedUpdate<_>>(update, &metadata, &mut errors)
462462
}
463463
JsonUpdateFormat::Raw => {
464-
if let Some(error) = Self::raw_format_insert_delete_mismatch_error(update) {
465-
errors.push(error);
466-
self.last_event_number += 1;
467-
} else {
468-
self.apply_update::<&RawValue>(update, &metadata, &mut errors);
464+
let errors_before = errors.len();
465+
self.apply_update::<&RawValue>(update, &metadata, &mut errors);
466+
// On parse failure, check if the user sent insert/delete
467+
// envelopes with the raw format and provide a better hint.
468+
if errors.len() > errors_before {
469+
if let Some(error) =
470+
Self::raw_format_insert_delete_mismatch_error(update)
471+
{
472+
errors.truncate(errors_before);
473+
errors.push(error);
474+
}
469475
}
470476
}
471477
JsonUpdateFormat::Redis | JsonUpdateFormat::Snowflake => {

0 commit comments

Comments
 (0)