diff --git a/core/types.rs b/core/types.rs index 26eb79c41..25ad4655e 100644 --- a/core/types.rs +++ b/core/types.rs @@ -1287,7 +1287,7 @@ impl ImmutableRecord { pub fn column_count(&self) -> usize { let mut cursor = RecordCursor::new(); cursor.parse_full_header(self).unwrap(); - cursor.offsets.len() + cursor.serial_types.len() } } @@ -3583,4 +3583,19 @@ mod tests { header_length + size_of::() + size_of::() + text.len() ); } + + #[test] + fn test_column_count_matches_values_written() { + // Test with different numbers of values + for num_values in 1..=10 { + let values: Vec = (0..num_values).map(|i| Value::Integer(i as i64)).collect(); + + let record = ImmutableRecord::from_values(&values, values.len()); + let cnt = record.column_count(); + assert_eq!( + cnt, num_values, + "column_count should be {num_values}, not {cnt}" + ); + } + } }