refactor: separate a json2 extension type (#8745)

Signed-off-by: luofucong <luofc@foxmail.com>
This commit is contained in:
LFC
2026-08-05 20:15:05 +08:00
committed by GitHub
parent ec09d8809a
commit 95d9d92e42
30 changed files with 388 additions and 191 deletions
+1 -11
View File
@@ -339,14 +339,6 @@ pub enum Error {
#[snafu(implicit)]
location: Location,
},
#[snafu(display("Failed to set JSON structure settings: {value}"))]
SetJsonSettings {
value: String,
source: datatypes::error::Error,
#[snafu(implicit)]
location: Location,
},
}
impl ErrorExt for Error {
@@ -392,9 +384,7 @@ impl ErrorExt for Error {
#[cfg(feature = "enterprise")]
InvalidTriggerWebhookOption { .. } => StatusCode::InvalidArguments,
SerializeColumnDefaultConstraint { source, .. } | SetJsonSettings { source, .. } => {
source.status_code()
}
SerializeColumnDefaultConstraint { source, .. } => source.status_code(),
ConvertToGrpcDataType { source, .. } => source.status_code(),
SqlCommon { source, .. } => source.status_code(),
+5 -11
View File
@@ -39,7 +39,7 @@ use api::helper::ColumnDataTypeWrapper;
use api::v1::SemanticType;
use common_sql::default_constraint::parse_column_default_constraint;
use common_time::timezone::Timezone;
use datatypes::extension::json::{JsonExtensionType, JsonMetadata};
use datatypes::extension::json::{Json2ExtensionType, JsonMetadata};
use datatypes::prelude::ConcreteDataType;
use datatypes::schema::{COMMENT_KEY, ColumnDefaultConstraint, ColumnSchema};
use datatypes::types::json_type::JsonNativeType;
@@ -54,8 +54,8 @@ use crate::ast::{
};
use crate::error::{
self, ConvertToGrpcDataTypeSnafu, ConvertValueSnafu, Result,
SerializeColumnDefaultConstraintSnafu, SetFulltextOptionSnafu, SetJsonSettingsSnafu,
SetSkippingIndexOptionSnafu, SetVectorIndexOptionSnafu, SqlCommonSnafu,
SerializeColumnDefaultConstraintSnafu, SetFulltextOptionSnafu, SetSkippingIndexOptionSnafu,
SetVectorIndexOptionSnafu, SqlCommonSnafu,
};
use crate::statements::create::Column;
pub use crate::statements::option_map::OptionMap;
@@ -164,14 +164,8 @@ pub fn column_to_schema(
};
if is_json2_column {
let settings = column.extensions.build_json_settings()?.unwrap_or_default();
let extension = JsonExtensionType::new(Arc::new(JsonMetadata {
json_settings: Some(settings.clone()),
}));
column_schema
.with_extension_type(&extension)
.with_context(|_| SetJsonSettingsSnafu {
value: format!("{settings:?}"),
})?;
let extension = Json2ExtensionType::new(Arc::new(JsonMetadata::new(settings)));
column_schema.with_extension_type(&extension);
}
Ok(column_schema)