apache / apache/arrow-rs

[FlightSQL] Inconsistent base64 encoding for arrow-go and arrow-rust

Open
#6,753 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.