diff --git a/src/query/fns/label.rs b/src/query/fns/label.rs index 6caa4bc0e37f66f638b71b0629ce08db2f8e52c2..9bd6ee87285abb0eda14ee83314c5267cc69d10c 100644 --- a/src/query/fns/label.rs +++ b/src/query/fns/label.rs @@ -7,6 +7,15 @@ use crate::query::{ ops::Operable, }; +/// MetricsQL's alias label manipulation query function +#[inline] +pub fn mql_alias<'a>( + qry_expr: impl Operable + 'a, + name: &'a str, +) -> QryFunc<impl Fn(&mut fmt::Formatter) -> fmt::Result + 'a> { + qry_fn!(alias, "{qry_expr}, \"{name}\"") +} + /// MetricsQL's label_set label manipulation query function #[inline] pub fn mql_label_set<'a>( @@ -126,4 +135,10 @@ mod tests { let qry = mql_label_set(Metric::new("metric"), &["label", "value"]).to_string(); assert_eq!(qry, r#"label_set(metric,"label","value")"#); } + + #[test] + fn label_alias() { + let qry = mql_alias(Metric::new("metric"), "alias").to_string(); + assert_eq!(qry, "alias(metric, \"alias\")"); + } } diff --git a/tests/fns.rs b/tests/fns.rs index c81ceb02109f943bec4460ca983818de752862b6..55e2a9793c87faa1bb5dcb6612132b5627422003 100644 --- a/tests/fns.rs +++ b/tests/fns.rs @@ -107,6 +107,13 @@ async fn mql_label_map() { utils::send_query(query).await.unwrap(); } +#[cfg(feature = "metricsql")] +#[tokio::test] +async fn mql_alias() { + let query = label::mql_alias(Metric::new("metric"), "alias"); + utils::send_query(query).await.unwrap(); +} + #[cfg(feature = "metricsql")] label_tests!( mql_label_set,