Skip to content

Commit

Permalink
MINOR: Stop ignoring AggregateFunction::distinct in protobuf serde …
Browse files Browse the repository at this point in the history
…code (#3250)
  • Loading branch information
andygrove authored Aug 24, 2022
1 parent 6c32098 commit 7e407df
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 3 deletions.
2 changes: 1 addition & 1 deletion datafusion/optimizer/src/single_distinct_to_groupby.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ fn optimize(plan: &LogicalPlan) -> Result<LogicalPlan> {
Expr::AggregateFunction {
fun: fun.clone(),
args: vec![col(SINGLE_DISTINCT_ALIAS)],
distinct: false,
distinct: false, // intentional to remove distict here
}
}
_ => agg_expr.clone(),
Expand Down
1 change: 1 addition & 0 deletions datafusion/proto/proto/datafusion.proto
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,7 @@ enum AggregateFunction {
message AggregateExprNode {
AggregateFunction aggr_function = 1;
repeated LogicalExprNode expr = 2;
bool distinct = 3;
}

message AggregateUDFExprNode {
Expand Down
2 changes: 1 addition & 1 deletion datafusion/proto/src/from_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -890,7 +890,7 @@ pub fn parse_expr(
.iter()
.map(|e| parse_expr(e, registry))
.collect::<Result<Vec<_>, _>>()?,
distinct: false, // TODO
distinct: expr.distinct,
})
}
ExprType::Alias(alias) => Ok(Expr::Alias(
Expand Down
22 changes: 22 additions & 0 deletions datafusion/proto/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -912,6 +912,28 @@ mod roundtrip_tests {
roundtrip_expr_test(test_expr, ctx);
}

#[test]
fn roundtrip_count() {
let test_expr = Expr::AggregateFunction {
fun: AggregateFunction::Count,
args: vec![col("bananas")],
distinct: false,
};
let ctx = SessionContext::new();
roundtrip_expr_test(test_expr, ctx);
}

#[test]
fn roundtrip_count_distinct() {
let test_expr = Expr::AggregateFunction {
fun: AggregateFunction::Count,
args: vec![col("bananas")],
distinct: true,
};
let ctx = SessionContext::new();
roundtrip_expr_test(test_expr, ctx);
}

#[test]
fn roundtrip_approx_percentile_cont() {
let test_expr = Expr::AggregateFunction {
Expand Down
5 changes: 4 additions & 1 deletion datafusion/proto/src/to_proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,9 @@ impl TryFrom<&Expr> for protobuf::LogicalExprNode {
}
}
Expr::AggregateFunction {
ref fun, ref args, ..
ref fun,
ref args,
ref distinct,
} => {
let aggr_function = match fun {
AggregateFunction::ApproxDistinct => {
Expand Down Expand Up @@ -550,6 +552,7 @@ impl TryFrom<&Expr> for protobuf::LogicalExprNode {
.iter()
.map(|v| v.try_into())
.collect::<Result<Vec<_>, _>>()?,
distinct: *distinct,
};
Self {
expr_type: Some(ExprType::AggregateExpr(aggregate_expr)),
Expand Down

0 comments on commit 7e407df

Please sign in to comment.