Skip to content

Commit c54a638

Browse files
authored
Enable clone_on_ref_ptr clippy lints on proto (#11465)
1 parent 82fd6a7 commit c54a638

6 files changed

Lines changed: 21 additions & 17 deletions

File tree

datafusion/proto-common/src/from_proto/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ impl TryFrom<&protobuf::ScalarValue> for ScalarValue {
448448
None,
449449
&message.version(),
450450
)?;
451-
Ok(record_batch.column(0).clone())
451+
Ok(Arc::clone(record_batch.column(0)))
452452
}
453453
_ => Err(Error::General("dictionary id not found in schema while deserializing ScalarValue::List".to_string())),
454454
}?;

datafusion/proto-common/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
// KIND, either express or implied. See the License for the
1515
// specific language governing permissions and limitations
1616
// under the License.
17+
// Make cheap clones clear: https://github.com/apache/datafusion/issues/11143
18+
#![deny(clippy::clone_on_ref_ptr)]
1719

1820
//! Serialize / Deserialize DataFusion Primitive Types to bytes
1921
//!

datafusion/proto/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
// KIND, either express or implied. See the License for the
1515
// specific language governing permissions and limitations
1616
// under the License.
17+
// Make cheap clones clear: https://github.com/apache/datafusion/issues/11143
18+
#![deny(clippy::clone_on_ref_ptr)]
1719

1820
//! Serialize / Deserialize DataFusion Plans to bytes
1921
//!

datafusion/proto/src/physical_plan/from_proto.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ pub fn parse_physical_expr(
365365
Some(buf) => codec.try_decode_udf(&e.name, buf)?,
366366
None => registry.udf(e.name.as_str())?,
367367
};
368-
let scalar_fun_def = udf.clone();
368+
let scalar_fun_def = Arc::clone(&udf);
369369

370370
let args = parse_physical_exprs(&e.args, registry, input_schema, codec)?;
371371

datafusion/proto/src/physical_plan/mod.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
11011101
where
11021102
Self: Sized,
11031103
{
1104-
let plan_clone = plan.clone();
1104+
let plan_clone = Arc::clone(&plan);
11051105
let plan = plan.as_any();
11061106

11071107
if let Some(exec) = plan.downcast_ref::<ExplainExec>() {
@@ -1128,7 +1128,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
11281128
let expr = exec
11291129
.expr()
11301130
.iter()
1131-
.map(|expr| serialize_physical_expr(expr.0.clone(), extension_codec))
1131+
.map(|expr| serialize_physical_expr(Arc::clone(&expr.0), extension_codec))
11321132
.collect::<Result<Vec<_>>>()?;
11331133
let expr_name = exec.expr().iter().map(|expr| expr.1.clone()).collect();
11341134
return Ok(protobuf::PhysicalPlanNode {
@@ -1169,7 +1169,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
11691169
protobuf::FilterExecNode {
11701170
input: Some(Box::new(input)),
11711171
expr: Some(serialize_physical_expr(
1172-
exec.predicate().clone(),
1172+
Arc::clone(exec.predicate()),
11731173
extension_codec,
11741174
)?),
11751175
default_filter_selectivity: exec.default_selectivity() as u32,
@@ -1585,7 +1585,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
15851585
if let Some(exec) = plan.downcast_ref::<ParquetExec>() {
15861586
let predicate = exec
15871587
.predicate()
1588-
.map(|pred| serialize_physical_expr(pred.clone(), extension_codec))
1588+
.map(|pred| serialize_physical_expr(Arc::clone(pred), extension_codec))
15891589
.transpose()?;
15901590
return Ok(protobuf::PhysicalPlanNode {
15911591
physical_plan_type: Some(PhysicalPlanType::ParquetScan(
@@ -1810,13 +1810,13 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
18101810
let window_expr = exec
18111811
.window_expr()
18121812
.iter()
1813-
.map(|e| serialize_physical_window_expr(e.clone(), extension_codec))
1813+
.map(|e| serialize_physical_window_expr(Arc::clone(e), extension_codec))
18141814
.collect::<Result<Vec<protobuf::PhysicalWindowExprNode>>>()?;
18151815

18161816
let partition_keys = exec
18171817
.partition_keys
18181818
.iter()
1819-
.map(|e| serialize_physical_expr(e.clone(), extension_codec))
1819+
.map(|e| serialize_physical_expr(Arc::clone(e), extension_codec))
18201820
.collect::<Result<Vec<protobuf::PhysicalExprNode>>>()?;
18211821

18221822
return Ok(protobuf::PhysicalPlanNode {
@@ -1840,13 +1840,13 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
18401840
let window_expr = exec
18411841
.window_expr()
18421842
.iter()
1843-
.map(|e| serialize_physical_window_expr(e.clone(), extension_codec))
1843+
.map(|e| serialize_physical_window_expr(Arc::clone(e), extension_codec))
18441844
.collect::<Result<Vec<protobuf::PhysicalWindowExprNode>>>()?;
18451845

18461846
let partition_keys = exec
18471847
.partition_keys
18481848
.iter()
1849-
.map(|e| serialize_physical_expr(e.clone(), extension_codec))
1849+
.map(|e| serialize_physical_expr(Arc::clone(e), extension_codec))
18501850
.collect::<Result<Vec<protobuf::PhysicalExprNode>>>()?;
18511851

18521852
let input_order_mode = match &exec.input_order_mode {
@@ -1949,7 +1949,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
19491949
}
19501950

19511951
let mut buf: Vec<u8> = vec![];
1952-
match extension_codec.try_encode(plan_clone.clone(), &mut buf) {
1952+
match extension_codec.try_encode(Arc::clone(&plan_clone), &mut buf) {
19531953
Ok(_) => {
19541954
let inputs: Vec<protobuf::PhysicalPlanNode> = plan_clone
19551955
.children()

datafusion/proto/src/physical_plan/to_proto.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -323,11 +323,11 @@ pub fn serialize_physical_expr(
323323
} else if let Some(expr) = expr.downcast_ref::<BinaryExpr>() {
324324
let binary_expr = Box::new(protobuf::PhysicalBinaryExprNode {
325325
l: Some(Box::new(serialize_physical_expr(
326-
expr.left().clone(),
326+
Arc::clone(expr.left()),
327327
codec,
328328
)?)),
329329
r: Some(Box::new(serialize_physical_expr(
330-
expr.right().clone(),
330+
Arc::clone(expr.right()),
331331
codec,
332332
)?)),
333333
op: format!("{:?}", expr.op()),
@@ -347,7 +347,7 @@ pub fn serialize_physical_expr(
347347
expr: expr
348348
.expr()
349349
.map(|exp| {
350-
serialize_physical_expr(exp.clone(), codec)
350+
serialize_physical_expr(Arc::clone(exp), codec)
351351
.map(Box::new)
352352
})
353353
.transpose()?,
@@ -364,7 +364,7 @@ pub fn serialize_physical_expr(
364364
else_expr: expr
365365
.else_expr()
366366
.map(|a| {
367-
serialize_physical_expr(a.clone(), codec)
367+
serialize_physical_expr(Arc::clone(a), codec)
368368
.map(Box::new)
369369
})
370370
.transpose()?,
@@ -552,8 +552,8 @@ fn serialize_when_then_expr(
552552
codec: &dyn PhysicalExtensionCodec,
553553
) -> Result<protobuf::PhysicalWhenThen> {
554554
Ok(protobuf::PhysicalWhenThen {
555-
when_expr: Some(serialize_physical_expr(when_expr.clone(), codec)?),
556-
then_expr: Some(serialize_physical_expr(then_expr.clone(), codec)?),
555+
when_expr: Some(serialize_physical_expr(Arc::clone(when_expr), codec)?),
556+
then_expr: Some(serialize_physical_expr(Arc::clone(then_expr), codec)?),
557557
})
558558
}
559559

0 commit comments

Comments
 (0)