Skip to content

[Rust] Return error messages via Result for get_arrow_schema_from_metadata #26917

@asfimport

Description

@asfimport

While converting from the parquet schema to arrow schema some errors, including those during flatbuffer decoding, can be lost.

This is due to get_arrow_schema_from_metadata returning Option rather than Result

https://github.com/apache/arrow/pull/8936/files# improved the situation by printing the error to stdout, so the error isn't entirely lost, but this message should be propagated up the call chain as a proper Rust error via a Result.

            match arrow::ipc::root_as_message(slice) {
                Ok(message) => message
                    .header_as_schema()
                    .map(arrow::ipc::convert::fb_to_schema),
                Err(err) => {
                    // The flatbuffers implementation returns an error on verification error.
                    // TODO: return error to caller?
                    eprintln!(
                        "Unable to get root as message stored in {}: {:?}",
                        super::ARROW_SCHEMA_META_KEY,
                        err
                    );
                    None
                }
            }

Reporter: Andrew Lamb / @alamb
Assignee: Qingyou Meng / @mqy

PRs and other links:

Note: This issue was originally created as ARROW-10996. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions