@@ -66,74 +66,74 @@ pub fn normal_mode_handler(app: &mut App, key: KeyEvent) {
6666 }
6767 }
6868
69- KeyCode :: Enter => {
70- info ! ( "Run FS query" ) ;
71- let sql = app. state . flightsql_tab . editor ( ) . lines ( ) . join ( "" ) ;
72- info ! ( "SQL: {}" , sql) ;
73- let execution = Arc :: clone ( & app. execution ) ;
74- let _event_tx = app. event_tx ( ) ;
75- tokio:: spawn ( async move {
76- let client = execution. flightsql_client ( ) ;
77- let mut query =
78- FlightSQLQuery :: new ( sql. clone ( ) , None , None , None , Duration :: default ( ) , None ) ;
79- let start = Instant :: now ( ) ;
80- if let Some ( ref mut c) = * client. lock ( ) . await {
81- info ! ( "Sending query" ) ;
82- match c. execute ( sql, None ) . await {
83- Ok ( flight_info) => {
84- for endpoint in flight_info. endpoint {
85- if let Some ( ticket) = endpoint. ticket {
86- match c. do_get ( ticket. into_request ( ) ) . await {
87- Ok ( mut stream) => {
88- let mut batches: Vec < RecordBatch > = Vec :: new ( ) ;
89- // temporarily only show the first batch to avoid
90- // buffering massive result sets. Eventually there should
91- // be some sort of paging logic
92- // see https://github.com/datafusion-contrib/datafusion-tui/pull/133#discussion_r1756680874
93- // while let Some(maybe_batch) = stream.next().await {
94- if let Some ( maybe_batch) = stream. next ( ) . await {
95- match maybe_batch {
96- Ok ( batch) => {
97- info ! ( "Batch rows: {}" , batch. num_rows( ) ) ;
98- batches. push ( batch) ;
99- }
100- Err ( e) => {
101- error ! ( "Error getting batch: {:?}" , e) ;
102- let elapsed = start. elapsed ( ) ;
103- query. set_error ( Some ( e. to_string ( ) ) ) ;
104- query. set_execution_time ( elapsed) ;
105- }
106- }
107- }
108- let elapsed = start. elapsed ( ) ;
109- let rows: usize =
110- batches. iter ( ) . map ( |r| r. num_rows ( ) ) . sum ( ) ;
111- query. set_results ( Some ( batches) ) ;
112- query. set_num_rows ( Some ( rows) ) ;
113- query. set_execution_time ( elapsed) ;
114- }
115- Err ( e) => {
116- error ! ( "Error getting response: {:?}" , e) ;
117- let elapsed = start. elapsed ( ) ;
118- query. set_error ( Some ( e. to_string ( ) ) ) ;
119- query. set_execution_time ( elapsed) ;
120- }
121- }
122- }
123- }
124- }
125- Err ( e) => {
126- error ! ( "Error getting response: {:?}" , e) ;
127- let elapsed = start. elapsed ( ) ;
128- query. set_error ( Some ( e. to_string ( ) ) ) ;
129- query. set_execution_time ( elapsed) ;
130- }
131- }
132- }
133-
134- let _ = _event_tx. send ( AppEvent :: FlightSQLQueryResult ( query) ) ;
135- } ) ;
136- }
69+ // KeyCode::Enter => {
70+ // info!("Run FS query");
71+ // let sql = app.state.flightsql_tab.editor().lines().join("");
72+ // info!("SQL: {}", sql);
73+ // let execution = Arc::clone(&app.execution);
74+ // let _event_tx = app.event_tx();
75+ // tokio::spawn(async move {
76+ // let client = execution.flightsql_client();
77+ // let mut query =
78+ // FlightSQLQuery::new(sql.clone(), None, None, None, Duration::default(), None);
79+ // let start = Instant::now();
80+ // if let Some(ref mut c) = *client.lock().await {
81+ // info!("Sending query");
82+ // match c.execute(sql, None).await {
83+ // Ok(flight_info) => {
84+ // for endpoint in flight_info.endpoint {
85+ // if let Some(ticket) = endpoint.ticket {
86+ // match c.do_get(ticket.into_request()).await {
87+ // Ok(mut stream) => {
88+ // let mut batches: Vec<RecordBatch> = Vec::new();
89+ // // temporarily only show the first batch to avoid
90+ // // buffering massive result sets. Eventually there should
91+ // // be some sort of paging logic
92+ // // see https://github.com/datafusion-contrib/datafusion-tui/pull/133#discussion_r1756680874
93+ // // while let Some(maybe_batch) = stream.next().await {
94+ // if let Some(maybe_batch) = stream.next().await {
95+ // match maybe_batch {
96+ // Ok(batch) => {
97+ // info!("Batch rows: {}", batch.num_rows());
98+ // batches.push(batch);
99+ // }
100+ // Err(e) => {
101+ // error!("Error getting batch: {:?}", e);
102+ // let elapsed = start.elapsed();
103+ // query.set_error(Some(e.to_string()));
104+ // query.set_execution_time(elapsed);
105+ // }
106+ // }
107+ // }
108+ // let elapsed = start.elapsed();
109+ // let rows: usize =
110+ // batches.iter().map(|r| r.num_rows()).sum();
111+ // query.set_results(Some(batches));
112+ // query.set_num_rows(Some(rows));
113+ // query.set_execution_time(elapsed);
114+ // }
115+ // Err(e) => {
116+ // error!("Error getting response: {:?}", e);
117+ // let elapsed = start.elapsed();
118+ // query.set_error(Some(e.to_string()));
119+ // query.set_execution_time(elapsed);
120+ // }
121+ // }
122+ // }
123+ // }
124+ // }
125+ // Err(e) => {
126+ // error!("Error getting response: {:?}", e);
127+ // let elapsed = start.elapsed();
128+ // query.set_error(Some(e.to_string()));
129+ // query.set_execution_time(elapsed);
130+ // }
131+ // }
132+ // }
133+ //
134+ // let _ = _event_tx.send(AppEvent::FlightSQLQueryResult(query));
135+ // });
136+ // }
137137 _ => { }
138138 }
139139}
0 commit comments