#[macro_export]
macro_rules! instrument_with_spans {
(target: $target:expr, $lvl:expr, options: $options:expr, $($fields:tt)*) => {{
let options = $options;
let custom_fields = options.custom_fields.clone();
$crate::new_instrument_rule(
std::sync::Arc::new(move || {
let span = tracing::span!(
target: $target,
$lvl,
"InstrumentedExec",
otel.name = tracing::field::Empty,
datafusion.node = tracing::field::Empty,
datafusion.partitioning = tracing::field::Empty,
datafusion.emission_type = tracing::field::Empty,
datafusion.boundedness = tracing::field::Empty,
datafusion.preview = tracing::field::Empty,
datafusion.preview_rows = tracing::field::Empty,
datafusion.metrics.bloom_filter_eval_time = tracing::field::Empty,
datafusion.metrics.build_input_batches = tracing::field::Empty,
datafusion.metrics.build_input_rows = tracing::field::Empty,
datafusion.metrics.build_mem_used = tracing::field::Empty,
datafusion.metrics.build_time = tracing::field::Empty,
datafusion.metrics.bytes_scanned = tracing::field::Empty,
datafusion.metrics.elapsed_compute = tracing::field::Empty,
datafusion.metrics.end_timestamp = tracing::field::Empty,
datafusion.metrics.fetch_time = tracing::field::Empty,
datafusion.metrics.file_open_errors = tracing::field::Empty,
datafusion.metrics.file_scan_errors = tracing::field::Empty,
datafusion.metrics.input_batches = tracing::field::Empty,
datafusion.metrics.input_rows = tracing::field::Empty,
datafusion.metrics.join_time = tracing::field::Empty,
datafusion.metrics.mem_used = tracing::field::Empty,
datafusion.metrics.metadata_load_time = tracing::field::Empty,
datafusion.metrics.num_bytes = tracing::field::Empty,
datafusion.metrics.num_predicate_creation_errors = tracing::field::Empty,
datafusion.metrics.output_batches = tracing::field::Empty,
datafusion.metrics.output_rows = tracing::field::Empty,
datafusion.metrics.page_index_eval_time = tracing::field::Empty,
datafusion.metrics.page_index_rows_matched = tracing::field::Empty,
datafusion.metrics.page_index_rows_pruned = tracing::field::Empty,
datafusion.metrics.peak_mem_used = tracing::field::Empty,
datafusion.metrics.predicate_evaluation_errors = tracing::field::Empty,
datafusion.metrics.pushdown_rows_matched = tracing::field::Empty,
datafusion.metrics.pushdown_rows_pruned = tracing::field::Empty,
datafusion.metrics.repartition_time = tracing::field::Empty,
datafusion.metrics.row_groups_matched_bloom_filter = tracing::field::Empty,
datafusion.metrics.row_groups_matched_statistics = tracing::field::Empty,
datafusion.metrics.row_groups_pruned_bloom_filter = tracing::field::Empty,
datafusion.metrics.row_groups_pruned_statistics = tracing::field::Empty,
datafusion.metrics.row_pushdown_eval_time = tracing::field::Empty,
datafusion.metrics.row_replacements = tracing::field::Empty,
datafusion.metrics.send_time = tracing::field::Empty,
datafusion.metrics.skipped_aggregation_rows = tracing::field::Empty,
datafusion.metrics.spill_count = tracing::field::Empty,
datafusion.metrics.spilled_bytes = tracing::field::Empty,
datafusion.metrics.spilled_rows = tracing::field::Empty,
datafusion.metrics.start_timestamp = tracing::field::Empty,
datafusion.metrics.statistics_eval_time = tracing::field::Empty,
datafusion.metrics.stream_memory_usage = tracing::field::Empty,
datafusion.metrics.time_elapsed_opening = tracing::field::Empty,
datafusion.metrics.time_elapsed_processing = tracing::field::Empty,
datafusion.metrics.time_elapsed_scanning_total = tracing::field::Empty,
datafusion.metrics.time_elapsed_scanning_until_data = tracing::field::Empty,
$($fields)*
);
for (key, value) in custom_fields.iter() {
span.record(key.as_str(), value);
}
span
}),
options
)
}};
(target: $target:expr, $lvl:expr, options: $options:expr) => {
$crate::instrument_with_spans!(target: $target, $lvl, options: $options,)
};
($lvl:expr, options: $options:expr, $($fields:tt)*) => {
$crate::instrument_with_spans!(target: module_path!(), $lvl, options: $options, $($fields)*)
};
($lvl:expr, options: $options:expr) => {
$crate::instrument_with_spans!(target: module_path!(), $lvl, options: $options)
};
}
#[macro_export]
macro_rules! instrument_with_trace_spans {
(target: $target:expr, options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_spans!(
target: $target,
tracing::Level::TRACE,
options: $options,
$($field)*
)
};
(options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_trace_spans!(target: module_path!(), options: $options, $($field)*)
};
(target: $target:expr, options: $options:expr) => {
$crate::instrument_with_trace_spans!(target: $target, options: $options, )
};
(options: $options:expr) => {
$crate::instrument_with_trace_spans!(target: module_path!(), options: $options)
};
}
#[macro_export]
macro_rules! instrument_with_debug_spans {
(target: $target:expr, options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_spans!(
target: $target,
tracing::Level::DEBUG,
options: $options,
$($field)*
)
};
(options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_debug_spans!(target: module_path!(), options: $options, $($field)*)
};
(target: $target:expr, options: $options:expr) => {
$crate::instrument_with_debug_spans!(target: $target, options: $options, )
};
(options: $options:expr) => {
$crate::instrument_with_debug_spans!(target: module_path!(), options: $options)
};
}
#[macro_export]
macro_rules! instrument_with_info_spans {
(target: $target:expr, options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_spans!(
target: $target,
tracing::Level::INFO,
options: $options,
$($field)*
)
};
(options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_info_spans!(target: module_path!(), options: $options, $($field)*)
};
(target: $target:expr, options: $options:expr) => {
$crate::instrument_with_info_spans!(target: $target, options: $options, )
};
(options: $options:expr) => {
$crate::instrument_with_info_spans!(target: module_path!(), options: $options)
};
}
#[macro_export]
macro_rules! instrument_with_warn_spans {
(target: $target:expr, options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_spans!(
target: $target,
tracing::Level::WARN,
options: $options,
$($field)*
)
};
(options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_warn_spans!(target: module_path!(), options: $options, $($field)*)
};
(target: $target:expr, options: $options:expr) => {
$crate::instrument_with_warn_spans!(target: $target, options: $options, )
};
(options: $options:expr) => {
$crate::instrument_with_warn_spans!(target: module_path!(), options: $options)
};
}
#[macro_export]
macro_rules! instrument_with_error_spans {
(target: $target:expr, options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_spans!(
target: $target,
tracing::Level::ERROR,
options: $options,
$($field)*
)
};
(options: $options:expr, $($field:tt)*) => {
$crate::instrument_with_error_spans!(target: module_path!(), options: $options, $($field)*)
};
(target: $target:expr, options: $options:expr) => {
$crate::instrument_with_error_spans!(target: $target, options: $options, )
};
(options: $options:expr) => {
$crate::instrument_with_error_spans!(target: module_path!(), options: $options)
};
}