From e6d13646c746c576b5eed8c9a21ac59d783f2910 Mon Sep 17 00:00:00 2001 From: Jeremy Dyer Date: Wed, 7 Sep 2022 11:16:50 -0400 Subject: [PATCH] Implement Eq trait for Expr and nest types (#3381) --- datafusion/expr/src/expr.rs | 4 ++-- datafusion/expr/src/logical_plan/plan.rs | 2 ++ datafusion/expr/src/udaf.rs | 2 ++ datafusion/expr/src/udf.rs | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/datafusion/expr/src/expr.rs b/datafusion/expr/src/expr.rs index 6226887e80d0..ab45dd67d1b8 100644 --- a/datafusion/expr/src/expr.rs +++ b/datafusion/expr/src/expr.rs @@ -81,7 +81,7 @@ use std::sync::Arc; /// assert_eq!(op, Operator::Eq); /// } /// ``` -#[derive(Clone, PartialEq, Hash)] +#[derive(Clone, PartialEq, Eq, Hash)] pub enum Expr { /// An expression with a specific name. Alias(Box, String), @@ -293,7 +293,7 @@ pub enum Expr { /// for Postgres definition. /// See https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-groupby.html /// for Apache Spark definition. -#[derive(Clone, PartialEq, Hash)] +#[derive(Clone, PartialEq, Eq, Hash)] pub enum GroupingSet { /// Rollup grouping sets Rollup(Vec), diff --git a/datafusion/expr/src/logical_plan/plan.rs b/datafusion/expr/src/logical_plan/plan.rs index 0cc0c28e822c..6770e310ce7d 100644 --- a/datafusion/expr/src/logical_plan/plan.rs +++ b/datafusion/expr/src/logical_plan/plan.rs @@ -1431,6 +1431,8 @@ impl PartialEq for Subquery { } } +impl Eq for Subquery {} + /// Logical partitioning schemes supported by the repartition operator. #[derive(Debug, Clone)] pub enum Partitioning { diff --git a/datafusion/expr/src/udaf.rs b/datafusion/expr/src/udaf.rs index 8c15da40f223..00f48dda272c 100644 --- a/datafusion/expr/src/udaf.rs +++ b/datafusion/expr/src/udaf.rs @@ -56,6 +56,8 @@ impl PartialEq for AggregateUDF { } } +impl Eq for AggregateUDF {} + impl std::hash::Hash for AggregateUDF { fn hash(&self, state: &mut H) { self.name.hash(state); diff --git a/datafusion/expr/src/udf.rs b/datafusion/expr/src/udf.rs index 4d60b2994c6b..ffb98bc7a1fd 100644 --- a/datafusion/expr/src/udf.rs +++ b/datafusion/expr/src/udf.rs @@ -59,6 +59,8 @@ impl PartialEq for ScalarUDF { } } +impl Eq for ScalarUDF {} + impl std::hash::Hash for ScalarUDF { fn hash(&self, state: &mut H) { self.name.hash(state);