apache / arrow-rs

Official Rust implementation of Apache Arrow
https://arrow.apache.org/
Apache License 2.0
2.59k stars 790 forks source link

FlightSQL Integration Test with JDBC / ODBC drivers #2409

Open tustvold opened 2 years ago

tustvold commented 2 years ago

This ticket is largely a placeholder, this likely needs further design

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

The arrow-flight crate provides experimental support for FlightSQL, however, the test coverage of this functionality is extremely limited.

Describe the solution you'd like

Integration testing of this component against an upstream implementation, e.g. Java, would be advantageous to catch mistakes interpreting the specification. This might take the form of

Describe alternatives you've considered

Additional context

avantgardnerio commented 2 years ago

I think once we have reasonable coverage with JDBC, we can probably also use that to build out the Rust FlightSql client and test against that implementation as well. Let's get it working at all first though ;)

avantgardnerio commented 2 years ago

At Space and Time, we do have a build of the JDBC driver that publishes a Docker sqline container. @tustvold & @andygrove one strategy that would almost certainly work would be to integration test the arrow-ballista implementation using that container.

avantgardnerio commented 2 years ago

Also @jolfr

tustvold commented 2 years ago

I think that would definitely be better than nothing, but it would be ideal if we could have something lower latency for CI within arrow-rs. It can be the best part of a month between a change landing on main in arrow-rs, and being integrated into Ballista...

alamb commented 1 year ago

We have implemented JDBC driver integration testing in InfluxDB IOx using a small driver program here: https://github.com/influxdata/influxdb_iox/tree/main/influxdb_iox/tests/jdbc_client

It would be a straightforward exercise to port that client to the arrow-rs repo and setup some basic integration testing