Skip to content

Commit 2980c30

Browse files
committed
Refine some codes.
1 parent d94ee10 commit 2980c30

File tree

6 files changed

+50
-37
lines changed

6 files changed

+50
-37
lines changed

src/query/storages/fuse/fuse/src/pruning/pruning_executor.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ use common_catalog::table_context::TableContext;
2525
use common_datavalues::DataSchemaRef;
2626
use common_exception::ErrorCode;
2727
use common_exception::Result;
28-
use common_storages_pruner::limiter_pruner;
29-
use common_storages_pruner::limiter_pruner::LimiterPruner;
30-
use common_storages_pruner::range_pruner;
31-
use common_storages_pruner::range_pruner::RangePruner;
28+
use common_storages_pruner::LimiterPruner;
29+
use common_storages_pruner::LimiterPrunerCreator;
30+
use common_storages_pruner::RangePruner;
31+
use common_storages_pruner::RangePrunerCreator;
3232
use common_storages_table_meta::meta::BlockMeta;
3333
use common_storages_table_meta::meta::Location;
3434
use common_storages_table_meta::meta::SegmentInfo;
@@ -79,11 +79,11 @@ impl BlockPruner {
7979
.and_then(|p| p.limit);
8080

8181
// prepare the limiter. in case that limit is none, an unlimited limiter will be returned
82-
let limiter = limiter_pruner::new_limiter(limit);
82+
let limiter = LimiterPrunerCreator::create(limit);
8383

8484
// prepare the range filter.
8585
// if filter_expression is none, an dummy pruner will be returned, which prunes nothing
86-
let range_pruner = range_pruner::new_range_pruner(ctx, filter_expressions, &schema)?;
86+
let range_pruner = RangePrunerCreator::try_create(ctx, filter_expressions, &schema)?;
8787

8888
// prepare the filter.
8989
// None will be returned, if filter is not applicable (e.g. unsuitable filter expression, index not available, etc.)

src/query/storages/parquet/src/parquet_reader/meta.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ impl ParquetReader {
8080
}
8181

8282
for (rg_idx, _) in rgs.iter().enumerate() {
83-
let mut cols_stats = HashMap::new();
84-
cols_stats.reserve(stats.capacity());
83+
let mut cols_stats = HashMap::with_capacity(stats.capacity());
8584
for index in indices {
8685
let col_stats = stats_of_row_groups[index].get(rg_idx);
8786
cols_stats.insert(*index as u32, col_stats);

src/query/storages/parquet/src/table_function/read.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use common_exception::Result;
2727
use common_pipeline_core::Pipeline;
2828
use common_sql::evaluator::EvalNode;
2929
use common_sql::evaluator::Evaluator;
30-
use common_storages_pruner::range_pruner;
30+
use common_storages_pruner::RangePrunerCreator;
3131

3232
use super::ParquetTable;
3333
use super::TableContext;
@@ -145,7 +145,7 @@ impl ParquetTable {
145145

146146
// build row group pruner.
147147
let filter_expr = push_downs.as_ref().map(|extra| extra.filters.as_slice());
148-
let row_group_pruner = range_pruner::new_range_pruner(&ctx_ref, filter_expr, &schema)?;
148+
let row_group_pruner = RangePrunerCreator::try_create(&ctx_ref, filter_expr, &schema)?;
149149

150150
for location in &locations {
151151
let file_meta = ParquetReader::read_meta(location)?;

src/query/storages/pruner/src/lib.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,10 @@
1414

1515
#![deny(unused_crate_dependencies)]
1616

17-
pub mod limiter_pruner;
18-
pub mod range_pruner;
17+
mod limiter_pruner;
18+
mod range_pruner;
19+
20+
pub use limiter_pruner::LimiterPruner;
21+
pub use limiter_pruner::LimiterPrunerCreator;
22+
pub use range_pruner::RangePruner;
23+
pub use range_pruner::RangePrunerCreator;

src/query/storages/pruner/src/limiter_pruner.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,14 @@ impl Limiter for U64Limiter {
5959
}
6060

6161
pub type LimiterPruner = Arc<dyn Limiter + Send + Sync>;
62-
pub fn new_limiter(limit: Option<usize>) -> LimiterPruner {
63-
match limit {
64-
Some(size) => Arc::new(U64Limiter::new(size as u64)),
65-
_ => Arc::new(Unlimited),
62+
63+
pub struct LimiterPrunerCreator;
64+
65+
impl LimiterPrunerCreator {
66+
pub fn create(limit: Option<usize>) -> LimiterPruner {
67+
match limit {
68+
Some(size) => Arc::new(U64Limiter::new(size as u64)),
69+
_ => Arc::new(Unlimited),
70+
}
6671
}
6772
}

src/query/storages/pruner/src/range_pruner.rs

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,32 @@ impl RangePruner for RangeFilter {
5555
}
5656
}
5757

58-
/// Create a new [`RangePruner`] from expression and schema.
59-
///
60-
/// Note: the schema should be the schema of the table, not the schema of the input.
61-
pub fn new_range_pruner<'a>(
62-
ctx: &Arc<dyn TableContext>,
63-
filter_expr: Option<&'a [Expression]>,
64-
schema: &'a DataSchemaRef,
65-
) -> Result<Arc<dyn RangePruner + Send + Sync>> {
66-
Ok(match filter_expr {
67-
Some(exprs) if !exprs.is_empty() => {
68-
let range_filter = RangeFilter::try_create(ctx.clone(), exprs, schema.clone())?;
69-
match range_filter.try_eval_const() {
70-
Ok(v) => {
71-
if v {
72-
Arc::new(KeepTrue)
73-
} else {
74-
Arc::new(KeepFalse)
58+
pub struct RangePrunerCreator;
59+
60+
impl RangePrunerCreator {
61+
/// Create a new [`RangePruner`] from expression and schema.
62+
///
63+
/// Note: the schema should be the schema of the table, not the schema of the input.
64+
pub fn try_create<'a>(
65+
ctx: &Arc<dyn TableContext>,
66+
filter_expr: Option<&'a [Expression]>,
67+
schema: &'a DataSchemaRef,
68+
) -> Result<Arc<dyn RangePruner + Send + Sync>> {
69+
Ok(match filter_expr {
70+
Some(exprs) if !exprs.is_empty() => {
71+
let range_filter = RangeFilter::try_create(ctx.clone(), exprs, schema.clone())?;
72+
match range_filter.try_eval_const() {
73+
Ok(v) => {
74+
if v {
75+
Arc::new(KeepTrue)
76+
} else {
77+
Arc::new(KeepFalse)
78+
}
7579
}
80+
Err(_) => Arc::new(range_filter),
7681
}
77-
Err(_) => Arc::new(range_filter),
7882
}
79-
}
80-
_ => Arc::new(KeepTrue),
81-
})
83+
_ => Arc::new(KeepTrue),
84+
})
85+
}
8286
}

0 commit comments

Comments
 (0)