Skip to content

Commit a9dfc76

Browse files
committed
add block statistics
1 parent 5680157 commit a9dfc76

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+624
-36
lines changed

src/query/service/src/interpreters/common/table_option_validation.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ use databend_common_expression::TableSchemaRef;
2525
use databend_common_io::constants::DEFAULT_BLOCK_ROW_COUNT;
2626
use databend_common_settings::Settings;
2727
use databend_common_sql::BloomIndexColumns;
28+
use databend_common_sql::DistinctColumns;
2829
use databend_common_storages_fuse::FUSE_OPT_KEY_BLOCK_IN_MEM_SIZE_THRESHOLD;
2930
use databend_common_storages_fuse::FUSE_OPT_KEY_BLOCK_PER_SEGMENT;
3031
use databend_common_storages_fuse::FUSE_OPT_KEY_DATA_RETENTION_NUM_SNAPSHOTS_TO_KEEP;
@@ -35,12 +36,14 @@ use databend_common_storages_fuse::FUSE_OPT_KEY_ROW_AVG_DEPTH_THRESHOLD;
3536
use databend_common_storages_fuse::FUSE_OPT_KEY_ROW_PER_BLOCK;
3637
use databend_common_storages_fuse::FUSE_OPT_KEY_ROW_PER_PAGE;
3738
use databend_storages_common_index::BloomIndex;
39+
use databend_storages_common_index::RangeIndex;
3840
use databend_storages_common_table_meta::table::OPT_KEY_BLOOM_INDEX_COLUMNS;
3941
use databend_storages_common_table_meta::table::OPT_KEY_CHANGE_TRACKING;
4042
use databend_storages_common_table_meta::table::OPT_KEY_CLUSTER_TYPE;
4143
use databend_storages_common_table_meta::table::OPT_KEY_COMMENT;
4244
use databend_storages_common_table_meta::table::OPT_KEY_CONNECTION_NAME;
4345
use databend_storages_common_table_meta::table::OPT_KEY_DATABASE_ID;
46+
use databend_storages_common_table_meta::table::OPT_KEY_DISTINCT_COLUMNS;
4447
use databend_storages_common_table_meta::table::OPT_KEY_ENABLE_COPY_DEDUP_FULL_PATH;
4548
use databend_storages_common_table_meta::table::OPT_KEY_ENGINE;
4649
use databend_storages_common_table_meta::table::OPT_KEY_LOCATION;
@@ -68,6 +71,7 @@ pub static CREATE_FUSE_OPTIONS: LazyLock<HashSet<&'static str>> = LazyLock::new(
6871
r.insert(FUSE_OPT_KEY_ENABLE_AUTO_VACUUM);
6972

7073
r.insert(OPT_KEY_BLOOM_INDEX_COLUMNS);
74+
r.insert(OPT_KEY_DISTINCT_COLUMNS);
7175
r.insert(OPT_KEY_TABLE_COMPRESSION);
7276
r.insert(OPT_KEY_STORAGE_FORMAT);
7377
r.insert(OPT_KEY_DATABASE_ID);
@@ -213,6 +217,16 @@ pub fn is_valid_bloom_index_columns(
213217
Ok(())
214218
}
215219

220+
pub fn is_valid_distinct_columns(
221+
options: &BTreeMap<String, String>,
222+
schema: TableSchemaRef,
223+
) -> databend_common_exception::Result<()> {
224+
if let Some(value) = options.get(OPT_KEY_DISTINCT_COLUMNS) {
225+
DistinctColumns::verify_definition(value, schema, RangeIndex::supported_table_type)?;
226+
}
227+
Ok(())
228+
}
229+
216230
pub fn is_valid_change_tracking(
217231
options: &BTreeMap<String, String>,
218232
) -> databend_common_exception::Result<()> {

src/query/service/src/interpreters/interpreter_table_create.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ use crate::interpreters::common::table_option_validation::is_valid_bloom_index_c
7171
use crate::interpreters::common::table_option_validation::is_valid_change_tracking;
7272
use crate::interpreters::common::table_option_validation::is_valid_create_opt;
7373
use crate::interpreters::common::table_option_validation::is_valid_data_retention_period;
74+
use crate::interpreters::common::table_option_validation::is_valid_distinct_columns;
7475
use crate::interpreters::common::table_option_validation::is_valid_option_of_type;
7576
use crate::interpreters::common::table_option_validation::is_valid_random_seed;
7677
use crate::interpreters::common::table_option_validation::is_valid_row_per_block;
@@ -467,7 +468,8 @@ impl CreateTableInterpreter {
467468
is_valid_block_per_segment(&table_meta.options)?;
468469
is_valid_row_per_block(&table_meta.options)?;
469470
// check bloom_index_columns.
470-
is_valid_bloom_index_columns(&table_meta.options, schema)?;
471+
is_valid_bloom_index_columns(&table_meta.options, schema.clone())?;
472+
is_valid_distinct_columns(&table_meta.options, schema)?;
471473
is_valid_change_tracking(&table_meta.options)?;
472474
// check random seed
473475
is_valid_random_seed(&table_meta.options)?;

src/query/service/src/interpreters/interpreter_table_set_options.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ use crate::interpreters::common::table_option_validation::is_valid_block_per_seg
5353
use crate::interpreters::common::table_option_validation::is_valid_bloom_index_columns;
5454
use crate::interpreters::common::table_option_validation::is_valid_create_opt;
5555
use crate::interpreters::common::table_option_validation::is_valid_data_retention_period;
56+
use crate::interpreters::common::table_option_validation::is_valid_distinct_columns;
5657
use crate::interpreters::common::table_option_validation::is_valid_option_of_type;
5758
use crate::interpreters::common::table_option_validation::is_valid_row_per_block;
5859
use crate::interpreters::Interpreter;
@@ -163,6 +164,7 @@ impl Interpreter for SetOptionsInterpreter {
163164

164165
// check bloom_index_columns.
165166
is_valid_bloom_index_columns(&self.plan.set_options, table.schema())?;
167+
is_valid_distinct_columns(&self.plan.set_options, table.schema())?;
166168

167169
if let Some(new_snapshot_location) =
168170
set_segment_format(self.ctx.clone(), table.clone(), &self.plan.set_options).await?

src/query/service/src/test_kits/block_writer.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ impl<'a> BlockWriter<'a> {
110110
None,
111111
None,
112112
None,
113+
None,
113114
Compression::Lz4Raw,
114115
Some(Utc::now()),
115116
);

src/query/service/tests/it/storages/fuse/bloom_index_meta_size.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ fn build_test_segment_info(
338338
inverted_index_size: None,
339339
ngram_filter_index_size: None,
340340
virtual_block_meta: None,
341+
block_stats_meta: None,
341342
compression: Compression::Lz4,
342343
create_on: Some(Utc::now()),
343344
};

src/query/service/tests/it/storages/fuse/operations/mutation/recluster_mutator.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ async fn test_recluster_mutator_block_select() -> Result<()> {
7979
None,
8080
None,
8181
None,
82+
None,
8283
meta::Compression::Lz4Raw,
8384
Some(Utc::now()),
8485
));

src/query/service/tests/it/storages/fuse/operations/mutation/segments_compact_mutator.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,7 @@ impl CompactSegmentTestFixture {
779779
None,
780780
None,
781781
None,
782+
None,
782783
Compression::Lz4Raw,
783784
Some(Utc::now()),
784785
);

src/query/service/tests/it/storages/fuse/operations/read_plan.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ fn test_to_partitions() -> Result<()> {
105105
None,
106106
None,
107107
None,
108+
None,
108109
meta::Compression::Lz4Raw,
109110
Some(Utc::now()),
110111
));

src/query/service/tests/it/storages/fuse/statistics.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,7 @@ fn test_reduce_block_meta() -> databend_common_exception::Result<()> {
635635
None,
636636
None,
637637
None,
638+
None,
638639
Compression::Lz4Raw,
639640
Some(Utc::now()),
640641
);

src/query/settings/src/settings_default.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1319,6 +1319,13 @@ impl DefaultSettings {
13191319
scope: SettingScope::Both,
13201320
range: None,
13211321
}),
1322+
("enable_block_stream_write", DefaultSettingValue {
1323+
value: UserSettingValue::UInt64(1),
1324+
desc: "Enables block stream write",
1325+
mode: SettingMode::Both,
1326+
scope: SettingScope::Both,
1327+
range: Some(SettingRange::Numeric(0..=1)),
1328+
}),
13221329
("trace_sample_rate", DefaultSettingValue {
13231330
value: UserSettingValue::UInt64(1),
13241331
desc: "Setting the trace sample rate. The value should be between '0' and '100'",

0 commit comments

Comments
 (0)