mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-26 18:00:41 +00:00
refactor: explicitly define json struct to ingest jsonbench data (#7462)
ingest jsonbench data Signed-off-by: luofucong <luofc@foxmail.com>
This commit is contained in:
@@ -410,8 +410,7 @@ fn sql_value_to_value(
|
||||
})?
|
||||
} else {
|
||||
common_sql::convert::sql_value_to_value(
|
||||
column,
|
||||
&column_schema.data_type,
|
||||
column_schema,
|
||||
sql_val,
|
||||
timezone,
|
||||
None,
|
||||
|
||||
@@ -52,6 +52,7 @@ use common_time::Timestamp;
|
||||
use common_time::range::TimestampRange;
|
||||
use datafusion_expr::LogicalPlan;
|
||||
use datatypes::prelude::ConcreteDataType;
|
||||
use datatypes::schema::ColumnSchema;
|
||||
use humantime::format_duration;
|
||||
use itertools::Itertools;
|
||||
use partition::manager::{PartitionRuleManager, PartitionRuleManagerRef};
|
||||
@@ -644,11 +645,20 @@ impl StatementExecutor {
|
||||
})?
|
||||
.unit();
|
||||
|
||||
let start_column = ColumnSchema::new(
|
||||
"range_start",
|
||||
ConcreteDataType::timestamp_datatype(time_unit),
|
||||
false,
|
||||
);
|
||||
let end_column = ColumnSchema::new(
|
||||
"range_end",
|
||||
ConcreteDataType::timestamp_datatype(time_unit),
|
||||
false,
|
||||
);
|
||||
let mut time_ranges = Vec::with_capacity(sql_values_time_range.len());
|
||||
for (start, end) in sql_values_time_range {
|
||||
let start = common_sql::convert::sql_value_to_value(
|
||||
"range_start",
|
||||
&ConcreteDataType::timestamp_datatype(time_unit),
|
||||
&start_column,
|
||||
start,
|
||||
Some(&query_ctx.timezone()),
|
||||
None,
|
||||
@@ -667,8 +677,7 @@ impl StatementExecutor {
|
||||
})?;
|
||||
|
||||
let end = common_sql::convert::sql_value_to_value(
|
||||
"range_end",
|
||||
&ConcreteDataType::timestamp_datatype(time_unit),
|
||||
&end_column,
|
||||
end,
|
||||
Some(&query_ctx.timezone()),
|
||||
None,
|
||||
|
||||
@@ -242,8 +242,12 @@ fn values_to_vectors_by_exact_types(
|
||||
args.iter()
|
||||
.zip(exact_types.iter())
|
||||
.map(|(value, data_type)| {
|
||||
let data_type = &ConcreteDataType::from_arrow_type(data_type);
|
||||
let value = sql_value_to_value(DUMMY_COLUMN, data_type, value, tz, None, false)
|
||||
let schema = ColumnSchema::new(
|
||||
DUMMY_COLUMN,
|
||||
ConcreteDataType::from_arrow_type(data_type),
|
||||
true,
|
||||
);
|
||||
let value = sql_value_to_value(&schema, value, tz, None, false)
|
||||
.context(error::SqlCommonSnafu)?;
|
||||
|
||||
Ok(value_to_vector(value))
|
||||
@@ -260,10 +264,12 @@ fn values_to_vectors_by_valid_types(
|
||||
args.iter()
|
||||
.map(|value| {
|
||||
for data_type in valid_types {
|
||||
let data_type = &ConcreteDataType::from_arrow_type(data_type);
|
||||
if let Ok(value) =
|
||||
sql_value_to_value(DUMMY_COLUMN, data_type, value, tz, None, false)
|
||||
{
|
||||
let schema = ColumnSchema::new(
|
||||
DUMMY_COLUMN,
|
||||
ConcreteDataType::from_arrow_type(data_type),
|
||||
true,
|
||||
);
|
||||
if let Ok(value) = sql_value_to_value(&schema, value, tz, None, false) {
|
||||
return Ok(value_to_vector(value));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ use common_time::{Timestamp, Timezone};
|
||||
use datafusion_common::tree_node::TreeNodeVisitor;
|
||||
use datafusion_expr::LogicalPlan;
|
||||
use datatypes::prelude::ConcreteDataType;
|
||||
use datatypes::schema::{RawSchema, Schema};
|
||||
use datatypes::schema::{ColumnSchema, RawSchema, Schema};
|
||||
use datatypes::value::Value;
|
||||
use partition::expr::{Operand, PartitionExpr, RestrictedOp};
|
||||
use partition::multi_dim::MultiDimPartitionRule;
|
||||
@@ -2001,8 +2001,7 @@ fn convert_value(
|
||||
unary_op: Option<UnaryOperator>,
|
||||
) -> Result<Value> {
|
||||
sql_value_to_value(
|
||||
"<NONAME>",
|
||||
&data_type,
|
||||
&ColumnSchema::new("<NONAME>", data_type, true),
|
||||
value,
|
||||
Some(timezone),
|
||||
unary_op,
|
||||
|
||||
Reference in New Issue
Block a user