This is an automated email from the ASF dual-hosted git repository.
jayzhan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new e8594267e5 Minor: Extend more style of udaf `expr_fn`, Remove order
args for`covar_samp` and `covar_pop` (#10492)
e8594267e5 is described below
commit e8594267e5d560b2ade3c91ff1b2d9b75766f242
Author: Jay Zhan <[email protected]>
AuthorDate: Wed May 15 08:02:24 2024 +0800
Minor: Extend more style of udaf `expr_fn`, Remove order args
for`covar_samp` and `covar_pop` (#10492)
* adjust macro args
Signed-off-by: jayzhan211 <[email protected]>
* adjust macro rule
Signed-off-by: jayzhan211 <[email protected]>
---------
Signed-off-by: jayzhan211 <[email protected]>
---
datafusion/functions-aggregate/src/macros.rs | 43 +++++++++++++++++++---
.../proto/tests/cases/roundtrip_logical_plan.rs | 4 +-
2 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/datafusion/functions-aggregate/src/macros.rs
b/datafusion/functions-aggregate/src/macros.rs
index 27fc623a18..6c3348d6c1 100644
--- a/datafusion/functions-aggregate/src/macros.rs
+++ b/datafusion/functions-aggregate/src/macros.rs
@@ -15,24 +15,55 @@
// specific language governing permissions and limitations
// under the License.
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
macro_rules! make_udaf_expr_and_func {
($UDAF:ty, $EXPR_FN:ident, $($arg:ident)*, $DOC:expr,
$AGGREGATE_UDF_FN:ident) => {
+ // "fluent expr_fn" style function
+ #[doc = $DOC]
+ pub fn $EXPR_FN(
+ $($arg: datafusion_expr::Expr,)*
+ ) -> datafusion_expr::Expr {
+
datafusion_expr::Expr::AggregateFunction(datafusion_expr::expr::AggregateFunction::new_udf(
+ $AGGREGATE_UDF_FN(),
+ vec![$($arg),*],
+ false,
+ None,
+ None,
+ None,
+ ))
+ }
+ create_func!($UDAF, $AGGREGATE_UDF_FN);
+ };
+ ($UDAF:ty, $EXPR_FN:ident, $($arg:ident)*, $distinct:ident, $DOC:expr,
$AGGREGATE_UDF_FN:ident) => {
// "fluent expr_fn" style function
#[doc = $DOC]
pub fn $EXPR_FN(
$($arg: datafusion_expr::Expr,)*
distinct: bool,
- filter: Option<Box<datafusion_expr::Expr>>,
- order_by: Option<Vec<datafusion_expr::Expr>>,
- null_treatment: Option<sqlparser::ast::NullTreatment>
) -> datafusion_expr::Expr {
datafusion_expr::Expr::AggregateFunction(datafusion_expr::expr::AggregateFunction::new_udf(
$AGGREGATE_UDF_FN(),
vec![$($arg),*],
distinct,
- filter,
- order_by,
- null_treatment,
+ None,
+ None,
+ None
))
}
create_func!($UDAF, $AGGREGATE_UDF_FN);
diff --git a/datafusion/proto/tests/cases/roundtrip_logical_plan.rs
b/datafusion/proto/tests/cases/roundtrip_logical_plan.rs
index ec215937dc..b5b0b4c224 100644
--- a/datafusion/proto/tests/cases/roundtrip_logical_plan.rs
+++ b/datafusion/proto/tests/cases/roundtrip_logical_plan.rs
@@ -622,8 +622,8 @@ async fn roundtrip_expr_api() -> Result<()> {
),
array_replace_all(make_array(vec![lit(1), lit(2), lit(3)]), lit(2),
lit(4)),
first_value(vec![lit(1)], false, None, None, None),
- covar_samp(lit(1.5), lit(2.2), false, None, None, None),
- covar_pop(lit(1.5), lit(2.2), true, None, None, None),
+ covar_samp(lit(1.5), lit(2.2)),
+ covar_pop(lit(1.5), lit(2.2)),
];
// ensure expressions created with the expr api can be round tripped
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]