Hi everyone,

I’d like to discuss the possibility of sending filtering predicates to an
Arrow Flight server. Currently, it’s unclear what the "proper" approach is
for achieving this.

The GetFlightInfo method only accepts a FlightDescriptor without additional
parameters. If it allowed for extra parameters, this use case might be more
straightforward.

I’ve considered four possible approaches for passing predicates and
retrieving the appropriate endpoints from the server:

   1.

   *Include predicates in gRPC headers* when calling DoGet or DoExchange.
   -

      This approach is limited by gRPC header size constraints.
      2.

   *Embed predicates within the ticket returned by the Arrow Flight server.*
   -

      This requires the client to interpret the opaque binary ticket,
      potentially blurring the client-server separation.
      3.

   *Use a DoAction request (e.g., "get_flight_endpoints")* to accept
   filtering predicates and return the corresponding serialized endpoints.
   4.

   *Modify the FlightDescriptor to a command (CMD) type* and encode both
   the original ticket and predicate information in the command field.

I’m leaning toward approach #3 due to its flexibility and the advantage of
avoiding unnecessary schema serialization in FlightInfo when the client
only needs endpoints.

Has anyone else encountered this challenge? If so, what solutions have
worked for you?

Looking forward to your thoughts.

Best,
Rusty

Reply via email to