Skip to content

Commit 60767b6

Browse files
committed
ci: make output of ttc server with arrow consist with http handler.
1 parent 7442178 commit 60767b6

File tree

9 files changed

+506
-315
lines changed

9 files changed

+506
-315
lines changed

sql/src/raw_rows.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,25 @@ use crate::error::Error;
1616
use crate::error::Result;
1717
use crate::rows::Row;
1818
use crate::rows::ServerStats;
19+
use crate::value::FormatOptions;
1920
use crate::value::Value;
2021
use chrono_tz::Tz;
2122
use databend_client::schema::SchemaRef;
23+
use lexical_core::WriteFloatOptionsBuilder;
2224
use std::pin::Pin;
2325
use std::task::Context;
2426
use std::task::Poll;
2527
use tokio_stream::{Stream, StreamExt};
2628

29+
pub static HTTP_HANDLER_OPTIONS: FormatOptions = FormatOptions {
30+
true_string: b"1",
31+
false_string: b"0",
32+
float_options: WriteFloatOptionsBuilder::new()
33+
.nan_string(Some(b"NaN"))
34+
.nan_string(Some(b"Infinity"))
35+
.build_unchecked(),
36+
};
37+
2738
#[derive(Clone, Debug)]
2839
pub enum RawRowWithStats {
2940
Row(RawRow),
@@ -76,7 +87,7 @@ impl From<Row> for RawRow {
7687
fn from(row: Row) -> Self {
7788
let mut raw_row: Vec<Option<String>> = Vec::with_capacity(row.values().len());
7889
for val in row.values() {
79-
raw_row.push(Some(val.to_string()));
90+
raw_row.push(Some(val.to_string_with_options(&HTTP_HANDLER_OPTIONS)));
8091
}
8192
RawRow::new(row, raw_row)
8293
}

sql/src/value/convert.rs

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,40 +20,7 @@ use chrono_tz::Tz;
2020

2121
use crate::error::{ConvertError, Error, Result};
2222

23-
use super::{
24-
display_decimal_128, display_decimal_256, NumberValue, Value, DAYS_FROM_CE, TIMESTAMP_FORMAT,
25-
};
26-
27-
impl TryFrom<Value> for String {
28-
type Error = Error;
29-
fn try_from(val: Value) -> Result<Self> {
30-
match val {
31-
Value::String(s) => Ok(s),
32-
Value::Bitmap(s) => Ok(s),
33-
Value::Number(NumberValue::Decimal128(v, s)) => Ok(display_decimal_128(v, s.scale)),
34-
Value::Number(NumberValue::Decimal256(v, s)) => Ok(display_decimal_256(v, s.scale)),
35-
Value::Geometry(s) => Ok(s),
36-
Value::Geography(s) => Ok(s),
37-
Value::Interval(s) => Ok(s),
38-
Value::Variant(s) => Ok(s),
39-
Value::Date(d) => {
40-
let date =
41-
NaiveDate::from_num_days_from_ce_opt(d + DAYS_FROM_CE).ok_or_else(|| {
42-
ConvertError::new("date", format!("invalid date value: {}", d))
43-
})?;
44-
Ok(date.format("%Y-%m-%d").to_string())
45-
}
46-
Value::Timestamp(ts, tz) => {
47-
let dt = DateTime::from_timestamp_micros(ts).ok_or_else(|| {
48-
ConvertError::new("timestamp", format!("invalid timestamp: {}", ts))
49-
})?;
50-
let dt = dt.with_timezone(&tz);
51-
Ok(dt.format(TIMESTAMP_FORMAT).to_string())
52-
}
53-
_ => Err(ConvertError::new("string", format!("{val:?}")).into()),
54-
}
55-
}
56-
}
23+
use super::{NumberValue, Value, DAYS_FROM_CE};
5724

5825
impl TryFrom<Value> for bool {
5926
type Error = Error;

sql/src/value/format.rs

Lines changed: 0 additions & 278 deletions
This file was deleted.

0 commit comments

Comments
 (0)