mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-26 01:40:36 +00:00
refactor: support distinct JSON format and improve type conversions (#4979)
refactor: support distinct JSON format
This commit is contained in:
@@ -42,7 +42,9 @@ use common_time::Timestamp;
|
||||
use datatypes::prelude::ConcreteDataType;
|
||||
use datatypes::schema::constraint::{CURRENT_TIMESTAMP, CURRENT_TIMESTAMP_FN};
|
||||
use datatypes::schema::{ColumnDefaultConstraint, ColumnSchema, COMMENT_KEY};
|
||||
use datatypes::types::{cast, parse_string_to_vector_type_value, TimestampType};
|
||||
use datatypes::types::{
|
||||
cast, parse_string_to_json_type_value, parse_string_to_vector_type_value, TimestampType,
|
||||
};
|
||||
use datatypes::value::{OrderedF32, OrderedF64, Value};
|
||||
use snafu::{ensure, OptionExt, ResultExt};
|
||||
use sqlparser::ast::{ExactNumberInfo, Ident, ObjectName, UnaryOperator};
|
||||
@@ -126,15 +128,9 @@ fn parse_string_to_value(
|
||||
}
|
||||
}
|
||||
ConcreteDataType::Binary(_) => Ok(Value::Binary(s.as_bytes().into())),
|
||||
ConcreteDataType::Json(_) => {
|
||||
if let Ok(json) = jsonb::parse_value(s.as_bytes()) {
|
||||
Ok(Value::Binary(json.to_vec().into()))
|
||||
} else {
|
||||
ParseSqlValueSnafu {
|
||||
msg: format!("Failed to parse {s} to Json value"),
|
||||
}
|
||||
.fail()
|
||||
}
|
||||
ConcreteDataType::Json(j) => {
|
||||
let v = parse_string_to_json_type_value(&s, &j.format).context(DatatypeSnafu)?;
|
||||
Ok(Value::Binary(v.into()))
|
||||
}
|
||||
ConcreteDataType::Vector(d) => {
|
||||
let v = parse_string_to_vector_type_value(&s, d.dim).context(DatatypeSnafu)?;
|
||||
|
||||
Reference in New Issue
Block a user