mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-27 14:16:18 +00:00
fix(json2): preserve metadata when adding columns via alter table (#8696)
* fix(json2): support adding columns via alter table Signed-off-by: fys <fengys1996@gmail.com> * fix(json2): scope missing-column null handling to JSON2 --------- Signed-off-by: fys <fengys1996@gmail.com>
This commit is contained in:
@@ -1192,6 +1192,7 @@ mod tests {
|
||||
use std::collections::HashMap;
|
||||
|
||||
use api::v1::{SetDatabaseOptions, UnsetDatabaseOptions};
|
||||
use datatypes::extension::json::is_json2_extension_type;
|
||||
use datatypes::value::Value;
|
||||
use session::context::{QueryContext, QueryContextBuilder};
|
||||
use sql::dialect::GreptimeDbDialect;
|
||||
@@ -1201,6 +1202,29 @@ mod tests {
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_to_alter_add_json2_column_preserves_extension() {
|
||||
let sql = "ALTER TABLE monitor ADD COLUMN payload JSON2;";
|
||||
let stmt =
|
||||
ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}, ParseOptions::default())
|
||||
.unwrap()
|
||||
.pop()
|
||||
.unwrap();
|
||||
let Statement::AlterTable(alter_table) = stmt else {
|
||||
unreachable!()
|
||||
};
|
||||
|
||||
let expr = to_alter_table_expr(alter_table, &QueryContext::arc()).unwrap();
|
||||
let AlterTableKind::AddColumns(AddColumns { add_columns, .. }) = expr.kind.unwrap() else {
|
||||
unreachable!()
|
||||
};
|
||||
let column_def = add_columns[0].column_def.as_ref().unwrap();
|
||||
let column_schema = try_as_column_schema(column_def).unwrap();
|
||||
let schema = Schema::new(vec![column_schema]);
|
||||
|
||||
assert!(is_json2_extension_type(&schema.arrow_schema().fields()[0]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_create_flow_tql_expr() {
|
||||
let sql = r#"
|
||||
|
||||
Reference in New Issue
Block a user