use crate::metrics::{
BaselineMetrics, Count, ExecutionPlanMetricsSet, Gauge, MetricBuilder, SpillMetrics,
Time,
};
pub(super) struct SortMergeJoinMetrics {
join_time: Time,
input_batches: Count,
input_rows: Count,
baseline_metrics: BaselineMetrics,
peak_mem_used: Gauge,
spill_metrics: SpillMetrics,
}
impl SortMergeJoinMetrics {
pub fn new(partition: usize, metrics: &ExecutionPlanMetricsSet) -> Self {
let join_time = MetricBuilder::new(metrics).subset_time("join_time", partition);
let input_batches =
MetricBuilder::new(metrics).counter("input_batches", partition);
let input_rows = MetricBuilder::new(metrics).counter("input_rows", partition);
let peak_mem_used = MetricBuilder::new(metrics).gauge("peak_mem_used", partition);
let spill_metrics = SpillMetrics::new(metrics, partition);
let baseline_metrics = BaselineMetrics::new(metrics, partition);
Self {
join_time,
input_batches,
input_rows,
baseline_metrics,
peak_mem_used,
spill_metrics,
}
}
pub fn join_time(&self) -> Time {
self.join_time.clone()
}
pub fn baseline_metrics(&self) -> BaselineMetrics {
self.baseline_metrics.clone()
}
pub fn input_batches(&self) -> Count {
self.input_batches.clone()
}
pub fn input_rows(&self) -> Count {
self.input_rows.clone()
}
pub fn peak_mem_used(&self) -> Gauge {
self.peak_mem_used.clone()
}
pub fn spill_metrics(&self) -> SpillMetrics {
self.spill_metrics.clone()
}
}