From 8c75ee2ff38bd183b9a780f4d0fbc0b1035ea4c4 Mon Sep 17 00:00:00 2001 From: Codetector Date: Wed, 7 Aug 2024 23:59:45 -0700 Subject: [PATCH] bugfix: Enum parsing Enum actually starts at 1. 0 seems to indicate some kind of invalid value? --- src/innodb/table/field.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/innodb/table/field.rs b/src/innodb/table/field.rs index 422f7f4..e8e6b79 100644 --- a/src/innodb/table/field.rs +++ b/src/innodb/table/field.rs @@ -188,11 +188,16 @@ impl Field { }; let num = self.parse_uint(buf, len); - assert!( - (num as usize) < values.len(), - "Enum Value is larger than expected?" - ); - (FieldValue::String(values[num as usize].clone()), len) + if num == 0 { + (FieldValue::String("__ERROR__".to_owned()), len) + } else { + let variant_index = num - 1; + assert!( + (variant_index as usize) < values.len(), + "Enum Value is larger than expected? {} vs {}", variant_index, values.len() + ); + (FieldValue::String(values[variant_index as usize].clone()), len) + } } #[allow(unreachable_patterns)] _ => {