@@ -44,7 +44,7 @@ use crate::query::error::ExecuteError;
4444use crate :: query:: { execute, CountsRequest , CountsResponse , Query as LogicalQuery } ;
4545use crate :: query:: { TableScanVisitor , QUERY_SESSION } ;
4646use crate :: rbac:: Users ;
47- use crate :: response:: QueryResponse ;
47+ use crate :: response:: { QueryResponse , TIME_ELAPSED_HEADER } ;
4848use crate :: storage:: object_storage:: commit_schema_to_storage;
4949use crate :: storage:: ObjectStorageError ;
5050use crate :: utils:: actix:: extract_session_key_from_req;
@@ -67,7 +67,6 @@ pub struct Query {
6767}
6868
6969pub async fn query ( req : HttpRequest , query_request : Query ) -> Result < HttpResponse , QueryError > {
70- let start = Instant :: now ( ) ;
7170 let session_state = QUERY_SESSION . state ( ) ;
7271 let raw_logical_plan = match session_state
7372 . create_logical_plan ( & query_request. query )
@@ -123,17 +122,20 @@ pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpRespons
123122 Value :: Array ( vec ! [ json!( { column_name: count} ) ] )
124123 } ;
125124
125+ let total_time = format ! ( "{:?}" , time. elapsed( ) ) ;
126126 let time = time. elapsed ( ) . as_secs_f64 ( ) ;
127127
128128 QUERY_EXECUTE_TIME
129129 . with_label_values ( & [ & table_name] )
130130 . observe ( time) ;
131131
132- return Ok ( HttpResponse :: Ok ( ) . json ( response) ) ;
132+ return Ok ( HttpResponse :: Ok ( )
133+ . insert_header ( ( TIME_ELAPSED_HEADER , total_time. as_str ( ) ) )
134+ . json ( response) ) ;
133135 }
134136
135137 let ( records, fields) = execute ( query, & table_name) . await ?;
136- let total_time = format ! ( "{:?}" , start . elapsed( ) ) ;
138+ let total_time = format ! ( "{:?}" , time . elapsed( ) ) ;
137139 let response = QueryResponse {
138140 records,
139141 fields,
0 commit comments