Skip to content

Commit e8c8e81

Browse files
use fields
1 parent 52980c4 commit e8c8e81

File tree

2 files changed

+13
-16
lines changed

2 files changed

+13
-16
lines changed

src/handlers/http/query.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@ use crate::query::error::ExecuteError;
4646
use crate::query::{execute_stream, CountsRequest, CountsResponse, Query as LogicalQuery};
4747
use crate::query::{TableScanVisitor, QUERY_SESSION};
4848
use crate::rbac::Users;
49-
use crate::response::TIME_ELAPSED_HEADER;
49+
use crate::response::{QueryResponse, TIME_ELAPSED_HEADER};
5050
use crate::storage::ObjectStorageError;
5151
use crate::utils::actix::extract_session_key_from_req;
52-
use crate::utils::arrow::record_batches_to_json;
5352
use crate::utils::time::{TimeParseError, TimeRange};
5453
use crate::utils::user_auth_for_datasets;
5554
use futures_core::Stream as CoreStream;
@@ -141,14 +140,16 @@ pub async fn query(req: HttpRequest, query_request: Query) -> Result<HttpRespons
141140
match batch_result {
142141
Ok(batch) => {
143142
// 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!({})
152153
});
153154
Ok(Bytes::from(response.to_string()))
154155
}

src/response.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
*/
1818

1919
use crate::{handlers::http::query::QueryError, utils::arrow::record_batches_to_json};
20-
use actix_web::HttpResponse;
2120
use datafusion::arrow::record_batch::RecordBatch;
2221
use itertools::Itertools;
2322
use serde_json::{json, Value};
@@ -30,11 +29,10 @@ pub struct QueryResponse {
3029
pub fields: Vec<String>,
3130
pub fill_null: bool,
3231
pub with_fields: bool,
33-
pub total_time: String,
3432
}
3533

3634
impl QueryResponse {
37-
pub fn to_http(&self) -> Result<HttpResponse, QueryError> {
35+
pub fn to_http(&self) -> Result<Value, QueryError> {
3836
info!("{}", "Returning query results");
3937
let mut json_records = record_batches_to_json(&self.records)?;
4038

@@ -58,8 +56,6 @@ impl QueryResponse {
5856
Value::Array(values)
5957
};
6058

61-
Ok(HttpResponse::Ok()
62-
.insert_header((TIME_ELAPSED_HEADER, self.total_time.as_str()))
63-
.json(response))
59+
Ok(response)
6460
}
6561
}

0 commit comments

Comments
 (0)