mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-05 21:02:58 +00:00
@@ -36,6 +36,14 @@ const INVERTED_INDEX_GRPC_KEY: &str = "inverted_index";
|
||||
/// Key used to store skip index options in gRPC column options.
|
||||
const SKIPPING_INDEX_GRPC_KEY: &str = "skipping_index";
|
||||
|
||||
const COLUMN_OPTION_MAPPINGS: [(&str, &str); 5] = [
|
||||
(FULLTEXT_GRPC_KEY, FULLTEXT_KEY),
|
||||
(INVERTED_INDEX_GRPC_KEY, INVERTED_INDEX_KEY),
|
||||
(SKIPPING_INDEX_GRPC_KEY, SKIPPING_INDEX_KEY),
|
||||
(EXTENSION_TYPE_NAME_KEY, EXTENSION_TYPE_NAME_KEY),
|
||||
(EXTENSION_TYPE_METADATA_KEY, EXTENSION_TYPE_METADATA_KEY),
|
||||
];
|
||||
|
||||
/// Tries to construct a `ColumnSchema` from the given `ColumnDef`.
|
||||
pub fn try_as_column_schema(column_def: &ColumnDef) -> Result<ColumnSchema> {
|
||||
let data_type = ColumnDataTypeWrapper::try_new(
|
||||
@@ -133,25 +141,15 @@ pub fn try_as_column_def(column_schema: &ColumnSchema, is_primary_key: bool) ->
|
||||
|
||||
/// Collect the [ColumnOptions] into the [Metadata] that can be used in, for example, [ColumnSchema].
|
||||
pub fn collect_column_options(column_options: Option<&ColumnOptions>) -> Metadata {
|
||||
let mut metadata = Metadata::default();
|
||||
let Some(ColumnOptions { options }) = column_options else {
|
||||
return metadata;
|
||||
return Metadata::default();
|
||||
};
|
||||
|
||||
if let Some(v) = options.get(FULLTEXT_GRPC_KEY) {
|
||||
metadata.insert(FULLTEXT_KEY.to_string(), v.clone());
|
||||
}
|
||||
if let Some(v) = options.get(INVERTED_INDEX_GRPC_KEY) {
|
||||
metadata.insert(INVERTED_INDEX_KEY.to_string(), v.clone());
|
||||
}
|
||||
if let Some(v) = options.get(SKIPPING_INDEX_GRPC_KEY) {
|
||||
metadata.insert(SKIPPING_INDEX_KEY.to_string(), v.clone());
|
||||
}
|
||||
if let Some(v) = options.get(EXTENSION_TYPE_NAME_KEY) {
|
||||
metadata.insert(EXTENSION_TYPE_NAME_KEY.to_string(), v.clone());
|
||||
}
|
||||
if let Some(v) = options.get(EXTENSION_TYPE_METADATA_KEY) {
|
||||
metadata.insert(EXTENSION_TYPE_METADATA_KEY.to_string(), v.clone());
|
||||
let mut metadata = Metadata::with_capacity(options.len());
|
||||
for (x, y) in COLUMN_OPTION_MAPPINGS {
|
||||
if let Some(v) = options.get(x) {
|
||||
metadata.insert(y.to_string(), v.clone());
|
||||
}
|
||||
}
|
||||
metadata
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user