Skip to content

Commit fcda93b

Browse files
authored
chore(query): set enable_experimental_virtual_column default as 0 (#19033)
* chore(query): set `enable_experimental_virtual_column` default as 0 * fix * fix tests * fix
1 parent bc42133 commit fcda93b

File tree

7 files changed

+19
-183
lines changed

7 files changed

+19
-183
lines changed

src/meta/api/src/schema_api_test_suite.rs

Lines changed: 0 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ use databend_common_expression::types::NumberDataType;
3030
use databend_common_expression::TableDataType;
3131
use databend_common_expression::TableField;
3232
use databend_common_expression::TableSchema;
33-
use databend_common_expression::VariantDataType;
34-
use databend_common_expression::VirtualDataField;
35-
use databend_common_expression::VirtualDataSchema;
36-
use databend_common_expression::VIRTUAL_COLUMNS_LIMIT;
37-
use databend_common_expression::VIRTUAL_COLUMN_ID_START;
3833
use databend_common_meta_app::app_error::AppError;
3934
use databend_common_meta_app::data_mask::CreateDatamaskReq;
4035
use databend_common_meta_app::data_mask::DataMaskNameIdent;
@@ -2966,156 +2961,6 @@ impl SchemaApiTestSuite {
29662961
let err = ErrorCode::from(err);
29672962
assert_eq!(ErrorCode::DUPLICATED_UPSERT_FILES, err.code());
29682963
}
2969-
2970-
info!("--- update table meta: virtual column too many");
2971-
{
2972-
let table = mt
2973-
.get_table((tenant_name, "db1", "tb2").into())
2974-
.await
2975-
.unwrap();
2976-
2977-
let mut virtual_schema = VirtualDataSchema {
2978-
fields: vec![],
2979-
metadata: Default::default(),
2980-
next_column_id: 0,
2981-
number_of_blocks: 0,
2982-
};
2983-
for i in 0..VIRTUAL_COLUMNS_LIMIT + 1 {
2984-
virtual_schema.fields.push(VirtualDataField {
2985-
name: i.to_string(),
2986-
data_types: vec![VariantDataType::Jsonb],
2987-
source_column_id: 0,
2988-
column_id: VIRTUAL_COLUMN_ID_START + i as u32,
2989-
});
2990-
}
2991-
2992-
let mut new_table_meta = table.meta.clone();
2993-
new_table_meta.virtual_schema = Some(virtual_schema);
2994-
2995-
let table_id = table.ident.table_id;
2996-
let table_version = table.ident.seq;
2997-
let req = UpdateTableMetaReq {
2998-
table_id,
2999-
seq: MatchSeq::Exact(table_version),
3000-
new_table_meta: new_table_meta.clone(),
3001-
base_snapshot_location: None,
3002-
};
3003-
let err = mt
3004-
.update_multi_table_meta(UpdateMultiTableMetaReq {
3005-
update_table_metas: vec![(req, table.as_ref().clone())],
3006-
..Default::default()
3007-
})
3008-
.await
3009-
.unwrap_err();
3010-
let err = ErrorCode::from(err);
3011-
assert_eq!(ErrorCode::VIRTUAL_COLUMN_TOO_MANY, err.code());
3012-
}
3013-
3014-
info!("--- update table meta: virtual column types deduplication");
3015-
{
3016-
let table = mt
3017-
.get_table((tenant_name, "db1", "tb2").into())
3018-
.await
3019-
.unwrap();
3020-
3021-
let mut virtual_schema = VirtualDataSchema {
3022-
fields: vec![],
3023-
metadata: Default::default(),
3024-
next_column_id: 0,
3025-
number_of_blocks: 0,
3026-
};
3027-
virtual_schema.fields.push(VirtualDataField {
3028-
name: "field_0".to_string(),
3029-
data_types: vec![
3030-
VariantDataType::Int64,
3031-
VariantDataType::Jsonb,
3032-
VariantDataType::Jsonb,
3033-
VariantDataType::Jsonb,
3034-
VariantDataType::String,
3035-
],
3036-
source_column_id: 0,
3037-
column_id: VIRTUAL_COLUMN_ID_START,
3038-
});
3039-
3040-
let mut new_table_meta = table.meta.clone();
3041-
new_table_meta.virtual_schema = Some(virtual_schema);
3042-
3043-
let table_id = table.ident.table_id;
3044-
let table_version = table.ident.seq;
3045-
let req = UpdateTableMetaReq {
3046-
table_id,
3047-
seq: MatchSeq::Exact(table_version),
3048-
new_table_meta: new_table_meta.clone(),
3049-
base_snapshot_location: None,
3050-
};
3051-
mt.update_multi_table_meta(UpdateMultiTableMetaReq {
3052-
update_table_metas: vec![(req, table.as_ref().clone())],
3053-
..Default::default()
3054-
})
3055-
.await?
3056-
.unwrap();
3057-
3058-
let table = mt
3059-
.get_table((tenant_name, "db1", "tb2").into())
3060-
.await
3061-
.unwrap();
3062-
assert_eq!(
3063-
table.meta.virtual_schema.as_ref().unwrap().fields[0].data_types,
3064-
vec![
3065-
VariantDataType::Int64,
3066-
VariantDataType::Jsonb,
3067-
VariantDataType::String
3068-
]
3069-
);
3070-
}
3071-
3072-
info!("--- update table meta: virtual column id out bound");
3073-
{
3074-
let table = mt
3075-
.get_table((tenant_name, "db1", "tb2").into())
3076-
.await
3077-
.unwrap();
3078-
3079-
let mut virtual_schema = VirtualDataSchema {
3080-
fields: vec![],
3081-
metadata: Default::default(),
3082-
next_column_id: 0,
3083-
number_of_blocks: 0,
3084-
};
3085-
virtual_schema.fields.push(VirtualDataField {
3086-
name: "field_0".to_string(),
3087-
data_types: vec![
3088-
VariantDataType::Int64,
3089-
VariantDataType::Jsonb,
3090-
VariantDataType::Jsonb,
3091-
VariantDataType::Jsonb,
3092-
VariantDataType::String,
3093-
],
3094-
source_column_id: 0,
3095-
column_id: VIRTUAL_COLUMN_ID_START - 1,
3096-
});
3097-
3098-
let mut new_table_meta = table.meta.clone();
3099-
new_table_meta.virtual_schema = Some(virtual_schema);
3100-
3101-
let table_id = table.ident.table_id;
3102-
let table_version = table.ident.seq;
3103-
let req = UpdateTableMetaReq {
3104-
table_id,
3105-
seq: MatchSeq::Exact(table_version),
3106-
new_table_meta: new_table_meta.clone(),
3107-
base_snapshot_location: None,
3108-
};
3109-
let err = mt
3110-
.update_multi_table_meta(UpdateMultiTableMetaReq {
3111-
update_table_metas: vec![(req, table.as_ref().clone())],
3112-
..Default::default()
3113-
})
3114-
.await
3115-
.unwrap_err();
3116-
let err = ErrorCode::from(err);
3117-
assert_eq!(ErrorCode::VIRTUAL_COLUMN_ID_OUT_BOUND, err.code());
3118-
}
31192964
}
31202965
Ok(())
31212966
}

src/meta/api/src/table_api.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ use std::sync::Arc;
2020

2121
use chrono::DateTime;
2222
use chrono::Utc;
23-
use databend_common_expression::VIRTUAL_COLUMNS_ID_UPPER;
24-
use databend_common_expression::VIRTUAL_COLUMNS_LIMIT;
25-
use databend_common_expression::VIRTUAL_COLUMN_ID_START;
2623
use databend_common_meta_app::app_error::AppError;
2724
use databend_common_meta_app::app_error::CommitTableMetaError;
2825
use databend_common_meta_app::app_error::CreateAsDropTableWithoutDropTime;
@@ -42,8 +39,6 @@ use databend_common_meta_app::app_error::UnknownStreamId;
4239
use databend_common_meta_app::app_error::UnknownTable;
4340
use databend_common_meta_app::app_error::UnknownTableId;
4441
use databend_common_meta_app::app_error::ViewAlreadyExists;
45-
use databend_common_meta_app::app_error::VirtualColumnIdOutBound;
46-
use databend_common_meta_app::app_error::VirtualColumnTooMany;
4742
use databend_common_meta_app::id_generator::IdGenerator;
4843
use databend_common_meta_app::primitive::Id;
4944
use databend_common_meta_app::principal::AutoIncrementKey;
@@ -1236,28 +1231,6 @@ where
12361231
// `update_table_meta` MUST NOT modify `shared_by` field
12371232
let table_meta = table_meta.as_ref().unwrap();
12381233

1239-
if let Some(virtual_schema) = &mut req.0.new_table_meta.virtual_schema {
1240-
if virtual_schema.fields.len() > VIRTUAL_COLUMNS_LIMIT {
1241-
return Err(KVAppError::AppError(AppError::VirtualColumnTooMany(
1242-
VirtualColumnTooMany::new(req.0.table_id, VIRTUAL_COLUMNS_LIMIT),
1243-
)));
1244-
}
1245-
for virtual_field in virtual_schema.fields.iter_mut() {
1246-
if !matches!(
1247-
virtual_field.column_id,
1248-
VIRTUAL_COLUMN_ID_START..=VIRTUAL_COLUMNS_ID_UPPER
1249-
) {
1250-
return Err(KVAppError::AppError(AppError::VirtualColumnIdOutBound(
1251-
VirtualColumnIdOutBound::new(
1252-
virtual_field.column_id,
1253-
VIRTUAL_COLUMN_ID_START,
1254-
VIRTUAL_COLUMNS_ID_UPPER,
1255-
),
1256-
)));
1257-
}
1258-
virtual_field.data_types.dedup();
1259-
}
1260-
}
12611234
let mut new_table_meta = req.0.new_table_meta.clone();
12621235
new_table_meta.shared_by = table_meta.shared_by.clone();
12631236

src/query/ee/tests/it/storages/fuse/operations/virtual_columns.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ async fn test_fuse_do_refresh_virtual_column() -> Result<()> {
3434
.default_session()
3535
.get_settings()
3636
.set_data_retention_time_in_days(0)?;
37+
fixture
38+
.default_session()
39+
.get_settings()
40+
.set_enable_experimental_virtual_column(1)?;
3741
fixture.create_default_database().await?;
3842
fixture.create_variant_table().await?;
3943

src/query/ee/tests/it/storages/fuse/operations/virtual_columns_builder.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ use jsonb::OwnedJsonb;
3232
#[tokio::test(flavor = "multi_thread")]
3333
async fn test_virtual_column_builder() -> Result<()> {
3434
let fixture = TestFixture::setup_with_custom(EESetup::new()).await?;
35+
fixture
36+
.default_session()
37+
.get_settings()
38+
.set_enable_experimental_virtual_column(1)?;
3539

3640
fixture.create_default_database().await?;
3741
fixture.create_variant_table().await?;
@@ -396,6 +400,10 @@ async fn test_virtual_column_builder() -> Result<()> {
396400
#[tokio::test(flavor = "multi_thread")]
397401
async fn test_virtual_column_builder_stream_write() -> Result<()> {
398402
let fixture = TestFixture::setup_with_custom(EESetup::new()).await?;
403+
fixture
404+
.default_session()
405+
.get_settings()
406+
.set_enable_experimental_virtual_column(1)?;
399407

400408
fixture.create_default_database().await?;
401409
fixture.create_variant_table().await?;

src/query/settings/src/settings_default.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1456,7 +1456,7 @@ impl DefaultSettings {
14561456
range: Some(SettingRange::Numeric(1..=1024)),
14571457
}),
14581458
("enable_experimental_virtual_column", DefaultSettingValue {
1459-
value: UserSettingValue::UInt64(1),
1459+
value: UserSettingValue::UInt64(0),
14601460
desc: "Enables experimental virtual column",
14611461
mode: SettingMode::Both,
14621462
scope: SettingScope::Both,

tests/sqllogictests/suites/ee/01_ee_system/01_0002_virtual_column.test

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ CREATE DATABASE test_virtual_column
2121
statement ok
2222
USE test_virtual_column
2323

24+
statement ok
25+
set enable_experimental_virtual_column = 1;
26+
2427
statement ok
2528
drop table if exists t1
2629

tests/sqllogictests/suites/mode/standalone/ee/explain_virtual_column.test

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ CREATE DATABASE test_virtual_db
2424
statement ok
2525
USE test_virtual_db
2626

27+
statement ok
28+
set enable_experimental_virtual_column = 1;
29+
2730
statement ok
2831
drop table if exists t1
2932

0 commit comments

Comments
 (0)