@@ -44,7 +44,7 @@ use crate::query::error::ExecuteError;
44
44
use crate :: query:: { execute, CountsRequest , CountsResponse , Query as LogicalQuery } ;
45
45
use crate :: query:: { TableScanVisitor , QUERY_SESSION } ;
46
46
use crate :: rbac:: Users ;
47
- use crate :: response:: QueryResponse ;
47
+ use crate :: response:: { QueryResponse , TIME_ELAPSED_HEADER } ;
48
48
use crate :: storage:: object_storage:: commit_schema_to_storage;
49
49
use crate :: storage:: ObjectStorageError ;
50
50
use crate :: utils:: actix:: extract_session_key_from_req;
@@ -67,7 +67,6 @@ pub struct Query {
67
67
}
68
68
69
69
pub async fn query ( req : HttpRequest , query_request : Query ) -> Result < HttpResponse , QueryError > {
70
- let start = Instant :: now ( ) ;
71
70
let session_state = QUERY_SESSION . state ( ) ;
72
71
let raw_logical_plan = match session_state
73
72
. create_logical_plan ( & query_request. query )
@@ -123,17 +122,20 @@ pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpRespons
123
122
Value :: Array ( vec ! [ json!( { column_name: count} ) ] )
124
123
} ;
125
124
125
+ let total_time = format ! ( "{:?}" , time. elapsed( ) ) ;
126
126
let time = time. elapsed ( ) . as_secs_f64 ( ) ;
127
127
128
128
QUERY_EXECUTE_TIME
129
129
. with_label_values ( & [ & table_name] )
130
130
. observe ( time) ;
131
131
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) ) ;
133
135
}
134
136
135
137
let ( records, fields) = execute ( query, & table_name) . await ?;
136
- let total_time = format ! ( "{:?}" , start . elapsed( ) ) ;
138
+ let total_time = format ! ( "{:?}" , time . elapsed( ) ) ;
137
139
let response = QueryResponse {
138
140
records,
139
141
fields,
0 commit comments