This is an automated email from the ASF dual-hosted git repository.
agrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new c7f8128 ARROW-9519 [Rust] Improved error message when getting a field
by name.
c7f8128 is described below
commit c7f8128e82fbea6283657d4e0b1ca14373a0b014
Author: Jorge C. Leitao <[email protected]>
AuthorDate: Mon Jul 20 12:24:45 2020 -0600
ARROW-9519 [Rust] Improved error message when getting a field by name.
Closes #7795 from jorgecarleitao/improve_error
Authored-by: Jorge C. Leitao <[email protected]>
Signed-off-by: Andy Grove <[email protected]>
---
rust/arrow/src/datatypes.rs | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/rust/arrow/src/datatypes.rs b/rust/arrow/src/datatypes.rs
index df8e8e2..45ac221 100644
--- a/rust/arrow/src/datatypes.rs
+++ b/rust/arrow/src/datatypes.rs
@@ -1521,7 +1521,12 @@ impl Schema {
return Ok(i);
}
}
- Err(ArrowError::InvalidArgumentError(name.to_owned()))
+ let valid_fields: Vec<String> =
+ self.fields.iter().map(|f| f.name().clone()).collect();
+ Err(ArrowError::InvalidArgumentError(format!(
+ "Unable to get field named \"{}\". Valid fields: {:?}",
+ name, valid_fields
+ )))
}
/// Returns an immutable reference to the Map of custom metadata key-value
pairs.
@@ -2359,7 +2364,9 @@ mod tests {
}
#[test]
- #[should_panic(expected = "InvalidArgumentError(\"nickname\")")]
+ #[should_panic(
+ expected = "Unable to get field named \\\"nickname\\\". Valid fields:
[\\\"first_name\\\", \\\"last_name\\\", \\\"address\\\"]"
+ )]
fn schema_index_of() {
let schema = person_schema();
assert_eq!(schema.index_of("first_name").unwrap(), 0);
@@ -2368,7 +2375,9 @@ mod tests {
}
#[test]
- #[should_panic(expected = "InvalidArgumentError(\"nickname\")")]
+ #[should_panic(
+ expected = "Unable to get field named \\\"nickname\\\". Valid fields:
[\\\"first_name\\\", \\\"last_name\\\", \\\"address\\\"]"
+ )]
fn schema_field_with_name() {
let schema = person_schema();
assert_eq!(