MCPcopy Create free account
hub / github.com/apache/arrow-rs / do_action

Method do_action

arrow-flight/src/sql/server.rs:864–981  ·  view source on GitHub ↗
(
        &self,
        request: Request<Action>,
    )

Source from the content-addressed store, hash-verified

862 }
863
864 async fn do_action(
865 &self,
866 request: Request<Action>,
867 ) -> Result<Response<Self::DoActionStream>, Status> {
868 if request.get_ref().r#type == CREATE_PREPARED_STATEMENT {
869 let any = Any::decode(&*request.get_ref().body).map_err(decode_error_to_status)?;
870
871 let cmd: ActionCreatePreparedStatementRequest = any
872 .unpack()
873 .map_err(arrow_error_to_status)?
874 .ok_or_else(|| {
875 Status::invalid_argument(
876 "Unable to unpack ActionCreatePreparedStatementRequest.",
877 )
878 })?;
879 let stmt = self
880 .do_action_create_prepared_statement(cmd, request)
881 .await?;
882 let output = futures::stream::iter(vec![Ok(super::super::r#gen::Result {
883 body: stmt.as_any().encode_to_vec().into(),
884 })]);
885 return Ok(Response::new(Box::pin(output)));
886 } else if request.get_ref().r#type == CLOSE_PREPARED_STATEMENT {
887 let any = Any::decode(&*request.get_ref().body).map_err(decode_error_to_status)?;
888
889 let cmd: ActionClosePreparedStatementRequest = any
890 .unpack()
891 .map_err(arrow_error_to_status)?
892 .ok_or_else(|| {
893 Status::invalid_argument(
894 "Unable to unpack ActionClosePreparedStatementRequest.",
895 )
896 })?;
897 self.do_action_close_prepared_statement(cmd, request)
898 .await?;
899 return Ok(Response::new(Box::pin(futures::stream::empty())));
900 } else if request.get_ref().r#type == CREATE_PREPARED_SUBSTRAIT_PLAN {
901 let any = Any::decode(&*request.get_ref().body).map_err(decode_error_to_status)?;
902
903 let cmd: ActionCreatePreparedSubstraitPlanRequest = any
904 .unpack()
905 .map_err(arrow_error_to_status)?
906 .ok_or_else(|| {
907 Status::invalid_argument(
908 "Unable to unpack ActionCreatePreparedSubstraitPlanRequest.",
909 )
910 })?;
911 self.do_action_create_prepared_substrait_plan(cmd, request)
912 .await?;
913 return Ok(Response::new(Box::pin(futures::stream::empty())));
914 } else if request.get_ref().r#type == BEGIN_TRANSACTION {
915 let any = Any::decode(&*request.get_ref().body).map_err(decode_error_to_status)?;
916
917 let cmd: ActionBeginTransactionRequest = any
918 .unpack()
919 .map_err(arrow_error_to_status)?
920 .ok_or_else(|| {
921 Status::invalid_argument("Unable to unpack ActionBeginTransactionRequest.")

Callers

nothing calls this directly

Tested by

no test coverage detected