@@ -46,10 +46,9 @@ use crate::query::error::ExecuteError;
46
46
use crate :: query:: { execute_stream, CountsRequest , CountsResponse , Query as LogicalQuery } ;
47
47
use crate :: query:: { TableScanVisitor , QUERY_SESSION } ;
48
48
use crate :: rbac:: Users ;
49
- use crate :: response:: TIME_ELAPSED_HEADER ;
49
+ use crate :: response:: { QueryResponse , TIME_ELAPSED_HEADER } ;
50
50
use crate :: storage:: ObjectStorageError ;
51
51
use crate :: utils:: actix:: extract_session_key_from_req;
52
- use crate :: utils:: arrow:: record_batches_to_json;
53
52
use crate :: utils:: time:: { TimeParseError , TimeRange } ;
54
53
use crate :: utils:: user_auth_for_datasets;
55
54
use futures_core:: Stream as CoreStream ;
@@ -141,14 +140,16 @@ pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpRespons
141
140
match batch_result {
142
141
Ok ( batch) => {
143
142
// convert record batch to JSON
144
- let json = record_batches_to_json ( & [ batch] )
145
- . map_err ( actix_web:: error:: ErrorInternalServerError ) ?;
146
- // // Serialize to JSON string
147
- // let json = serde_json::to_value(&json)
148
- // .map_err(actix_web::error::ErrorInternalServerError)?;
149
- let response = json ! ( {
150
- "fields" : fields,
151
- "records" : json,
143
+ let response = QueryResponse {
144
+ records : vec ! [ batch] ,
145
+ fields : fields. clone ( ) ,
146
+ fill_null : query_request. send_null ,
147
+ with_fields : query_request. fields ,
148
+ }
149
+ . to_http ( )
150
+ . unwrap_or_else ( |e| {
151
+ error ! ( "Failed to parse record batch into JSON: {}" , e) ;
152
+ json ! ( { } )
152
153
} ) ;
153
154
Ok ( Bytes :: from ( response. to_string ( ) ) )
154
155
}
0 commit comments