From 890823b6bcb9e43c9b8eacd6f21f5f6165ef1376 Mon Sep 17 00:00:00 2001 From: Andre Martins <38951957+amartins23@users.noreply.github.com> Date: Mon, 30 Oct 2023 11:32:24 +0000 Subject: [PATCH] feat(flight-sql): Allow custom commands in get-flight-info (#4997) --- arrow-flight/src/sql/server.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/arrow-flight/src/sql/server.rs b/arrow-flight/src/sql/server.rs index 14ab7d81b4f3..f1656aca882a 100644 --- a/arrow-flight/src/sql/server.rs +++ b/arrow-flight/src/sql/server.rs @@ -225,6 +225,18 @@ pub trait FlightSqlService: Sync + Send + Sized + 'static { )) } + /// Implementors may override to handle additional calls to get_flight_info() + async fn get_flight_info_fallback( + &self, + cmd: Command, + _request: Request, + ) -> Result, Status> { + Err(Status::unimplemented(format!( + "get_flight_info: The defined request is invalid: {}", + cmd.type_url() + ))) + } + // do_get /// Get a FlightDataStream containing the query results. @@ -616,10 +628,7 @@ where Command::CommandGetXdbcTypeInfo(token) => { self.get_flight_info_xdbc_type_info(token, request).await } - cmd => Err(Status::unimplemented(format!( - "get_flight_info: The defined request is invalid: {}", - cmd.type_url() - ))), + cmd => self.get_flight_info_fallback(cmd, request).await, } }