Skip to content

Commit

Permalink
feat: Enable clippy::clone_on_ref_ptr on proto and spark_exprs
Browse files Browse the repository at this point in the history
…crates
  • Loading branch information
comphead committed Aug 21, 2024
1 parent 9d8730d commit 2f1c4b9
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 28 deletions.
2 changes: 2 additions & 0 deletions native/proto/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
// specific language governing permissions and limitations
// under the License.

#![deny(clippy::clone_on_ref_ptr)]

// Include generated modules from .proto files.
#[allow(missing_docs)]
pub mod spark_expression {
Expand Down
9 changes: 7 additions & 2 deletions native/spark-expr/src/cast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,12 @@ fn cast_array(

let casted_dictionary = DictionaryArray::<Int32Type>::new(
dict_array.keys().clone(),
cast_array(dict_array.values().clone(), to_type, eval_mode, timezone)?,
cast_array(
Arc::clone(dict_array.values()),
to_type,
eval_mode,
timezone,
)?,
);

let casted_result = match to_type {
Expand Down Expand Up @@ -1393,7 +1398,7 @@ impl PhysicalExpr for Cast {
) -> datafusion_common::Result<Arc<dyn PhysicalExpr>> {
match children.len() {
1 => Ok(Arc::new(Cast::new(
children[0].clone(),
Arc::clone(&children[0]),
self.data_type.clone(),
self.eval_mode,
self.timezone.clone(),
Expand Down
12 changes: 6 additions & 6 deletions native/spark-expr/src/if_expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ impl IfExpr {
false_expr: Arc<dyn PhysicalExpr>,
) -> Self {
Self {
if_expr: if_expr.clone(),
true_expr: true_expr.clone(),
false_expr: false_expr.clone(),
if_expr: Arc::clone(&if_expr),
true_expr: Arc::clone(&true_expr),
false_expr: Arc::clone(&false_expr),
case_expr: Arc::new(
CaseExpr::try_new(None, vec![(if_expr, true_expr)], Some(false_expr)).unwrap(),
),
Expand Down Expand Up @@ -102,9 +102,9 @@ impl PhysicalExpr for IfExpr {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> Result<Arc<dyn PhysicalExpr>> {
Ok(Arc::new(IfExpr::new(
children[0].clone(),
children[1].clone(),
children[2].clone(),
Arc::clone(&children[1]),
Arc::clone(&children[1]),
Arc::clone(&children[2]),
)))
}

Expand Down
1 change: 1 addition & 0 deletions native/spark-expr/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
#![deny(clippy::clone_on_ref_ptr)]

mod cast;
mod error;
Expand Down
2 changes: 1 addition & 1 deletion native/spark-expr/src/regexp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ impl PhysicalExpr for RLike {
) -> Result<Arc<dyn PhysicalExpr>> {
assert!(children.len() == 1);
Ok(Arc::new(RLike::try_new(
children[0].clone(),
Arc::clone(&children[0]),
&self.pattern_str,
)?))
}
Expand Down
8 changes: 4 additions & 4 deletions native/spark-expr/src/scalar_funcs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ pub fn spark_round(
make_decimal_array(array, precision, scale, &f)
}
DataType::Float32 | DataType::Float64 => {
Ok(ColumnarValue::Array(round(&[array.clone()])?))
Ok(ColumnarValue::Array(round(&[Arc::clone(array)])?))
}
dt => exec_err!("Not supported datatype for ROUND: {dt}"),
},
Expand Down Expand Up @@ -451,12 +451,12 @@ pub fn spark_decimal_div(
let (p3, s3) = get_precision_scale(data_type);

let (left, right): (ArrayRef, ArrayRef) = match (left, right) {
(ColumnarValue::Array(l), ColumnarValue::Array(r)) => (l.clone(), r.clone()),
(ColumnarValue::Array(l), ColumnarValue::Array(r)) => (Arc::clone(l), Arc::clone(r)),
(ColumnarValue::Scalar(l), ColumnarValue::Array(r)) => {
(l.to_array_of_size(r.len())?, r.clone())
(l.to_array_of_size(r.len())?, Arc::clone(r))
}
(ColumnarValue::Array(l), ColumnarValue::Scalar(r)) => {
(l.clone(), r.to_array_of_size(l.len())?)
(Arc::clone(l), r.to_array_of_size(l.len())?)
}
(ColumnarValue::Scalar(l), ColumnarValue::Scalar(r)) => (l.to_array()?, r.to_array()?),
};
Expand Down
4 changes: 2 additions & 2 deletions native/spark-expr/src/scalar_funcs/hash_expressions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ pub fn spark_murmur3_hash(args: &[ColumnarValue]) -> Result<ColumnarValue, DataF
let arrays = args[0..args.len() - 1]
.iter()
.map(|arg| match arg {
ColumnarValue::Array(array) => array.clone(),
ColumnarValue::Array(array) => Arc::clone(array),
ColumnarValue::Scalar(scalar) => {
scalar.clone().to_array_of_size(num_rows).unwrap()
}
Expand Down Expand Up @@ -88,7 +88,7 @@ pub fn spark_xxhash64(args: &[ColumnarValue]) -> Result<ColumnarValue, DataFusio
let arrays = args[0..args.len() - 1]
.iter()
.map(|arg| match arg {
ColumnarValue::Array(array) => array.clone(),
ColumnarValue::Array(array) => Arc::clone(array),
ColumnarValue::Scalar(scalar) => {
scalar.clone().to_array_of_size(num_rows).unwrap()
}
Expand Down
12 changes: 6 additions & 6 deletions native/spark-expr/src/structs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ impl GetStructField {

fn child_field(&self, input_schema: &Schema) -> DataFusionResult<Arc<Field>> {
match self.child.data_type(input_schema)? {
DataType::Struct(fields) => Ok(fields[self.ordinal].clone()),
DataType::Struct(fields) => Ok(Arc::clone(&fields[self.ordinal])),
data_type => Err(DataFusionError::Plan(format!(
"Expect struct field, got {:?}",
data_type
Expand Down Expand Up @@ -177,12 +177,12 @@ impl PhysicalExpr for GetStructField {
.downcast_ref::<StructArray>()
.expect("A struct is expected");

Ok(ColumnarValue::Array(
struct_array.column(self.ordinal).clone(),
))
Ok(ColumnarValue::Array(Arc::clone(
struct_array.column(self.ordinal),
)))
}
ColumnarValue::Scalar(ScalarValue::Struct(struct_array)) => Ok(ColumnarValue::Array(
struct_array.column(self.ordinal).clone(),
Arc::clone(struct_array.column(self.ordinal)),
)),
value => Err(DataFusionError::Execution(format!(
"Expected a struct array, got {:?}",
Expand All @@ -200,7 +200,7 @@ impl PhysicalExpr for GetStructField {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> datafusion_common::Result<Arc<dyn PhysicalExpr>> {
Ok(Arc::new(GetStructField::new(
children[0].clone(),
Arc::clone(&children[0]),
self.ordinal,
)))
}
Expand Down
14 changes: 7 additions & 7 deletions native/spark-expr/src/temporal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ impl PhysicalExpr for HourExpr {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> Result<Arc<dyn PhysicalExpr>, DataFusionError> {
Ok(Arc::new(HourExpr::new(
children[0].clone(),
Arc::clone(&children[0]),
self.timezone.clone(),
)))
}
Expand Down Expand Up @@ -212,7 +212,7 @@ impl PhysicalExpr for MinuteExpr {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> Result<Arc<dyn PhysicalExpr>, DataFusionError> {
Ok(Arc::new(MinuteExpr::new(
children[0].clone(),
Arc::clone(&children[0]),
self.timezone.clone(),
)))
}
Expand Down Expand Up @@ -306,7 +306,7 @@ impl PhysicalExpr for SecondExpr {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> Result<Arc<dyn PhysicalExpr>, DataFusionError> {
Ok(Arc::new(SecondExpr::new(
children[0].clone(),
Arc::clone(&children[0]),
self.timezone.clone(),
)))
}
Expand Down Expand Up @@ -393,8 +393,8 @@ impl PhysicalExpr for DateTruncExpr {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> Result<Arc<dyn PhysicalExpr>, DataFusionError> {
Ok(Arc::new(DateTruncExpr::new(
children[0].clone(),
self.format.clone(),
Arc::clone(&children[0]),
Arc::clone(&self.format),
)))
}

Expand Down Expand Up @@ -518,8 +518,8 @@ impl PhysicalExpr for TimestampTruncExpr {
children: Vec<Arc<dyn PhysicalExpr>>,
) -> Result<Arc<dyn PhysicalExpr>, DataFusionError> {
Ok(Arc::new(TimestampTruncExpr::new(
children[0].clone(),
self.format.clone(),
Arc::clone(&children[0]),
Arc::clone(&self.format),
self.timezone.clone(),
)))
}
Expand Down

0 comments on commit 2f1c4b9

Please sign in to comment.