[FlightSQL] Inconsistent base64 encoding for arrow-go and arrow-rust
- Dominant language
- Rust
- Stars
- 3.6k
- Forks
- 1.3k
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 168
Description
For the handshake between a Flight SQL client and a Flight SQL server, the [Arrow Rust implementation](https://github.com/apache/arrow-rs/blob/b1f5c250ebb6c1252b4e7c51d15b8e77f4c361fa/arrow-flight/src/sql/client.rs#L165) uses Base64 standard encoding **with** padding, while the [Arrow Go implementation](https://github.com/apache/arrow-go/blob/e445486e93e9590c1c0808c0ce139954b1a84657/arrow/flight/client.go#L311) uses Base64 standard encoding **without** padding. Since these two are incompatible, our Flight SQL server cannot authenticate Go and Rust clients in a unified manner.
Contributor guide
Research direction
Compare the Rust client at arrow-flight/src/sql/client.rs around line 165 with the linked Arrow Go implementation around line 311. First determine the Flight SQL handshake's required Base64 padding convention, then trace the Rust authentication path and verify that Rust and Go clients can authenticate consistently. Done means the implementations use a compatible encoding and the handshake behavior is confirmed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, rust
- Domain
- backend-api-design, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100