Skip to content

Multi-language support issues with Arrow FlightSQL client's execute_update and execute_ingest methods #6545

@niebayes

Description

@niebayes

Describe the bug

We designed an Arrow FlightSQL server which implements do_put_statement_update and do_put_statement_ingest. This server works well with the Arrow FlightSQL client of Rust. However, it does not work as expected when interacting with the clients of Go and Python. Specifically, the returned affected rows of the ExecuteUpdate and ExecuteIngest methods is always 0, despite the SQL is executed successfully on the server.

You can find our Go demo codes at https://github.com/niebayes/examples/blob/chore/add_execute_update_examples/go/main.go

You can find our Python demo codes at https://github.com/niebayes/examples/blob/chore/add_execute_update_examples/python/main.py
Note, we utilize the flightsql-dbapi library provided by InfluxDB in the Python demo, since Arrow does not provide a native implementation of Arrow FlightSQL yet.

And the Rust demo codes https://github.com/niebayes/examples/blob/chore/add_execute_update_examples/rust/bin/main.rs

To Reproduce

Since our database project is private for now, we cannot provide ways to reproduce the error. But honestly I think this error does not involve the server-side implementation and is solely affected by the client-side deserialization of the DoPutResult.

Expected behavior

We expect the Arrow FlightSQL clients of Go and Python could decode the affected rows correctly, just like the Rust client does.

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    arrowChanges to the arrow cratearrow-flightChanges to the arrow-flight cratebug

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions