This is an automated email from the ASF dual-hosted git repository.
alamb 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 c54a638585 Enable clone_on_ref_ptr clippy lints on proto (#11465)
c54a638585 is described below
commit c54a638585715410fefbe07fd23552e3871bd4f0
Author: 张林伟 <[email protected]>
AuthorDate: Wed Jul 17 04:35:12 2024 +0800
Enable clone_on_ref_ptr clippy lints on proto (#11465)
---
datafusion/proto-common/src/from_proto/mod.rs | 2 +-
datafusion/proto-common/src/lib.rs | 2 ++
datafusion/proto/src/lib.rs | 2 ++
datafusion/proto/src/physical_plan/from_proto.rs | 2 +-
datafusion/proto/src/physical_plan/mod.rs | 18 +++++++++---------
datafusion/proto/src/physical_plan/to_proto.rs | 12 ++++++------
6 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/datafusion/proto-common/src/from_proto/mod.rs
b/datafusion/proto-common/src/from_proto/mod.rs
index df673de4e1..52ca5781dc 100644
--- a/datafusion/proto-common/src/from_proto/mod.rs
+++ b/datafusion/proto-common/src/from_proto/mod.rs
@@ -448,7 +448,7 @@ impl TryFrom<&protobuf::ScalarValue> for ScalarValue {
None,
&message.version(),
)?;
- Ok(record_batch.column(0).clone())
+ Ok(Arc::clone(record_batch.column(0)))
}
_ => Err(Error::General("dictionary id not found in
schema while deserializing ScalarValue::List".to_string())),
}?;
diff --git a/datafusion/proto-common/src/lib.rs
b/datafusion/proto-common/src/lib.rs
index 474db652df..91e3939154 100644
--- a/datafusion/proto-common/src/lib.rs
+++ b/datafusion/proto-common/src/lib.rs
@@ -14,6 +14,8 @@
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
+// Make cheap clones clear: https://github.com/apache/datafusion/issues/11143
+#![deny(clippy::clone_on_ref_ptr)]
//! Serialize / Deserialize DataFusion Primitive Types to bytes
//!
diff --git a/datafusion/proto/src/lib.rs b/datafusion/proto/src/lib.rs
index 57a1236ba8..bac31850c8 100644
--- a/datafusion/proto/src/lib.rs
+++ b/datafusion/proto/src/lib.rs
@@ -14,6 +14,8 @@
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
+// Make cheap clones clear: https://github.com/apache/datafusion/issues/11143
+#![deny(clippy::clone_on_ref_ptr)]
//! Serialize / Deserialize DataFusion Plans to bytes
//!
diff --git a/datafusion/proto/src/physical_plan/from_proto.rs
b/datafusion/proto/src/physical_plan/from_proto.rs
index 52fbd5cbdc..b7311c694d 100644
--- a/datafusion/proto/src/physical_plan/from_proto.rs
+++ b/datafusion/proto/src/physical_plan/from_proto.rs
@@ -365,7 +365,7 @@ pub fn parse_physical_expr(
Some(buf) => codec.try_decode_udf(&e.name, buf)?,
None => registry.udf(e.name.as_str())?,
};
- let scalar_fun_def = udf.clone();
+ let scalar_fun_def = Arc::clone(&udf);
let args = parse_physical_exprs(&e.args, registry, input_schema,
codec)?;
diff --git a/datafusion/proto/src/physical_plan/mod.rs
b/datafusion/proto/src/physical_plan/mod.rs
index e5429945e9..948a39bfe0 100644
--- a/datafusion/proto/src/physical_plan/mod.rs
+++ b/datafusion/proto/src/physical_plan/mod.rs
@@ -1101,7 +1101,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
where
Self: Sized,
{
- let plan_clone = plan.clone();
+ let plan_clone = Arc::clone(&plan);
let plan = plan.as_any();
if let Some(exec) = plan.downcast_ref::<ExplainExec>() {
@@ -1128,7 +1128,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
let expr = exec
.expr()
.iter()
- .map(|expr| serialize_physical_expr(expr.0.clone(),
extension_codec))
+ .map(|expr| serialize_physical_expr(Arc::clone(&expr.0),
extension_codec))
.collect::<Result<Vec<_>>>()?;
let expr_name = exec.expr().iter().map(|expr|
expr.1.clone()).collect();
return Ok(protobuf::PhysicalPlanNode {
@@ -1169,7 +1169,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
protobuf::FilterExecNode {
input: Some(Box::new(input)),
expr: Some(serialize_physical_expr(
- exec.predicate().clone(),
+ Arc::clone(exec.predicate()),
extension_codec,
)?),
default_filter_selectivity: exec.default_selectivity()
as u32,
@@ -1585,7 +1585,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
if let Some(exec) = plan.downcast_ref::<ParquetExec>() {
let predicate = exec
.predicate()
- .map(|pred| serialize_physical_expr(pred.clone(),
extension_codec))
+ .map(|pred| serialize_physical_expr(Arc::clone(pred),
extension_codec))
.transpose()?;
return Ok(protobuf::PhysicalPlanNode {
physical_plan_type: Some(PhysicalPlanType::ParquetScan(
@@ -1810,13 +1810,13 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
let window_expr = exec
.window_expr()
.iter()
- .map(|e| serialize_physical_window_expr(e.clone(),
extension_codec))
+ .map(|e| serialize_physical_window_expr(Arc::clone(e),
extension_codec))
.collect::<Result<Vec<protobuf::PhysicalWindowExprNode>>>()?;
let partition_keys = exec
.partition_keys
.iter()
- .map(|e| serialize_physical_expr(e.clone(), extension_codec))
+ .map(|e| serialize_physical_expr(Arc::clone(e),
extension_codec))
.collect::<Result<Vec<protobuf::PhysicalExprNode>>>()?;
return Ok(protobuf::PhysicalPlanNode {
@@ -1840,13 +1840,13 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
let window_expr = exec
.window_expr()
.iter()
- .map(|e| serialize_physical_window_expr(e.clone(),
extension_codec))
+ .map(|e| serialize_physical_window_expr(Arc::clone(e),
extension_codec))
.collect::<Result<Vec<protobuf::PhysicalWindowExprNode>>>()?;
let partition_keys = exec
.partition_keys
.iter()
- .map(|e| serialize_physical_expr(e.clone(), extension_codec))
+ .map(|e| serialize_physical_expr(Arc::clone(e),
extension_codec))
.collect::<Result<Vec<protobuf::PhysicalExprNode>>>()?;
let input_order_mode = match &exec.input_order_mode {
@@ -1949,7 +1949,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
}
let mut buf: Vec<u8> = vec![];
- match extension_codec.try_encode(plan_clone.clone(), &mut buf) {
+ match extension_codec.try_encode(Arc::clone(&plan_clone), &mut buf) {
Ok(_) => {
let inputs: Vec<protobuf::PhysicalPlanNode> = plan_clone
.children()
diff --git a/datafusion/proto/src/physical_plan/to_proto.rs
b/datafusion/proto/src/physical_plan/to_proto.rs
index 9c95acc1dc..d8d0291e1c 100644
--- a/datafusion/proto/src/physical_plan/to_proto.rs
+++ b/datafusion/proto/src/physical_plan/to_proto.rs
@@ -323,11 +323,11 @@ pub fn serialize_physical_expr(
} else if let Some(expr) = expr.downcast_ref::<BinaryExpr>() {
let binary_expr = Box::new(protobuf::PhysicalBinaryExprNode {
l: Some(Box::new(serialize_physical_expr(
- expr.left().clone(),
+ Arc::clone(expr.left()),
codec,
)?)),
r: Some(Box::new(serialize_physical_expr(
- expr.right().clone(),
+ Arc::clone(expr.right()),
codec,
)?)),
op: format!("{:?}", expr.op()),
@@ -347,7 +347,7 @@ pub fn serialize_physical_expr(
expr: expr
.expr()
.map(|exp| {
- serialize_physical_expr(exp.clone(), codec)
+ serialize_physical_expr(Arc::clone(exp),
codec)
.map(Box::new)
})
.transpose()?,
@@ -364,7 +364,7 @@ pub fn serialize_physical_expr(
else_expr: expr
.else_expr()
.map(|a| {
- serialize_physical_expr(a.clone(), codec)
+ serialize_physical_expr(Arc::clone(a),
codec)
.map(Box::new)
})
.transpose()?,
@@ -552,8 +552,8 @@ fn serialize_when_then_expr(
codec: &dyn PhysicalExtensionCodec,
) -> Result<protobuf::PhysicalWhenThen> {
Ok(protobuf::PhysicalWhenThen {
- when_expr: Some(serialize_physical_expr(when_expr.clone(), codec)?),
- then_expr: Some(serialize_physical_expr(then_expr.clone(), codec)?),
+ when_expr: Some(serialize_physical_expr(Arc::clone(when_expr),
codec)?),
+ then_expr: Some(serialize_physical_expr(Arc::clone(then_expr),
codec)?),
})
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]