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 4615a2d56c Enable clone_on_ref_ptr clippy lint on execution crate 
(#11239)
4615a2d56c is described below

commit 4615a2d56cda493d6e396491e10ea0d696ba9f10
Author: 张林伟 <[email protected]>
AuthorDate: Thu Jul 4 04:51:06 2024 +0800

    Enable clone_on_ref_ptr clippy lint on execution crate (#11239)
---
 datafusion/execution/src/cache/cache_manager.rs |  4 ++--
 datafusion/execution/src/cache/cache_unit.rs    |  6 +++---
 datafusion/execution/src/disk_manager.rs        |  2 +-
 datafusion/execution/src/lib.rs                 |  2 ++
 datafusion/execution/src/memory_pool/mod.rs     |  4 ++--
 datafusion/execution/src/object_store.rs        |  2 +-
 datafusion/execution/src/task.rs                | 11 +++++++----
 7 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/datafusion/execution/src/cache/cache_manager.rs 
b/datafusion/execution/src/cache/cache_manager.rs
index 9752926368..c2403e34c6 100644
--- a/datafusion/execution/src/cache/cache_manager.rs
+++ b/datafusion/execution/src/cache/cache_manager.rs
@@ -54,10 +54,10 @@ impl CacheManager {
     pub fn try_new(config: &CacheManagerConfig) -> Result<Arc<Self>> {
         let mut manager = CacheManager::default();
         if let Some(cc) = &config.table_files_statistics_cache {
-            manager.file_statistic_cache = Some(cc.clone())
+            manager.file_statistic_cache = Some(Arc::clone(cc))
         }
         if let Some(lc) = &config.list_files_cache {
-            manager.list_files_cache = Some(lc.clone())
+            manager.list_files_cache = Some(Arc::clone(lc))
         }
         Ok(Arc::new(manager))
     }
diff --git a/datafusion/execution/src/cache/cache_unit.rs 
b/datafusion/execution/src/cache/cache_unit.rs
index 25f9b9fa4d..a9291659a3 100644
--- a/datafusion/execution/src/cache/cache_unit.rs
+++ b/datafusion/execution/src/cache/cache_unit.rs
@@ -39,7 +39,7 @@ impl CacheAccessor<Path, Arc<Statistics>> for 
DefaultFileStatisticsCache {
     fn get(&self, k: &Path) -> Option<Arc<Statistics>> {
         self.statistics
             .get(k)
-            .map(|s| Some(s.value().1.clone()))
+            .map(|s| Some(Arc::clone(&s.value().1)))
             .unwrap_or(None)
     }
 
@@ -55,7 +55,7 @@ impl CacheAccessor<Path, Arc<Statistics>> for 
DefaultFileStatisticsCache {
                     // file has changed
                     None
                 } else {
-                    Some(statistics.clone())
+                    Some(Arc::clone(statistics))
                 }
             })
             .unwrap_or(None)
@@ -108,7 +108,7 @@ impl CacheAccessor<Path, Arc<Vec<ObjectMeta>>> for 
DefaultListFilesCache {
     type Extra = ObjectMeta;
 
     fn get(&self, k: &Path) -> Option<Arc<Vec<ObjectMeta>>> {
-        self.statistics.get(k).map(|x| x.value().clone())
+        self.statistics.get(k).map(|x| Arc::clone(x.value()))
     }
 
     fn get_with_extra(
diff --git a/datafusion/execution/src/disk_manager.rs 
b/datafusion/execution/src/disk_manager.rs
index 85cc6f8499..cca25c7c3e 100644
--- a/datafusion/execution/src/disk_manager.rs
+++ b/datafusion/execution/src/disk_manager.rs
@@ -139,7 +139,7 @@ impl DiskManager {
 
         let dir_index = thread_rng().gen_range(0..local_dirs.len());
         Ok(RefCountedTempFile {
-            parent_temp_dir: local_dirs[dir_index].clone(),
+            parent_temp_dir: Arc::clone(&local_dirs[dir_index]),
             tempfile: Builder::new()
                 .tempfile_in(local_dirs[dir_index].as_ref())
                 .map_err(DataFusionError::IoError)?,
diff --git a/datafusion/execution/src/lib.rs b/datafusion/execution/src/lib.rs
index 2fe0d83b1d..909364fa80 100644
--- a/datafusion/execution/src/lib.rs
+++ b/datafusion/execution/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)]
 
 //! DataFusion execution configuration and runtime structures
 
diff --git a/datafusion/execution/src/memory_pool/mod.rs 
b/datafusion/execution/src/memory_pool/mod.rs
index 321a89127b..3f66a304dc 100644
--- a/datafusion/execution/src/memory_pool/mod.rs
+++ b/datafusion/execution/src/memory_pool/mod.rs
@@ -268,7 +268,7 @@ impl MemoryReservation {
         self.size = self.size.checked_sub(capacity).unwrap();
         Self {
             size: capacity,
-            registration: self.registration.clone(),
+            registration: Arc::clone(&self.registration),
         }
     }
 
@@ -276,7 +276,7 @@ impl MemoryReservation {
     pub fn new_empty(&self) -> Self {
         Self {
             size: 0,
-            registration: self.registration.clone(),
+            registration: Arc::clone(&self.registration),
         }
     }
 
diff --git a/datafusion/execution/src/object_store.rs 
b/datafusion/execution/src/object_store.rs
index 3ba21e399f..9e1d94b346 100644
--- a/datafusion/execution/src/object_store.rs
+++ b/datafusion/execution/src/object_store.rs
@@ -234,7 +234,7 @@ impl ObjectStoreRegistry for DefaultObjectStoreRegistry {
         let s = get_url_key(url);
         self.object_stores
             .get(&s)
-            .map(|o| o.value().clone())
+            .map(|o| Arc::clone(o.value()))
             .ok_or_else(|| {
                 DataFusionError::Internal(format!(
                     "No suitable object store found for {url}. See 
`RuntimeEnv::register_object_store`"
diff --git a/datafusion/execution/src/task.rs b/datafusion/execution/src/task.rs
index b3a510ef2a..c21ce3d21d 100644
--- a/datafusion/execution/src/task.rs
+++ b/datafusion/execution/src/task.rs
@@ -121,7 +121,7 @@ impl TaskContext {
 
     /// Return the [RuntimeEnv] associated with this [TaskContext]
     pub fn runtime_env(&self) -> Arc<RuntimeEnv> {
-        self.runtime.clone()
+        Arc::clone(&self.runtime)
     }
 
     /// Update the [`SessionConfig`]
@@ -172,19 +172,22 @@ impl FunctionRegistry for TaskContext {
         udaf: Arc<AggregateUDF>,
     ) -> Result<Option<Arc<AggregateUDF>>> {
         udaf.aliases().iter().for_each(|alias| {
-            self.aggregate_functions.insert(alias.clone(), udaf.clone());
+            self.aggregate_functions
+                .insert(alias.clone(), Arc::clone(&udaf));
         });
         Ok(self.aggregate_functions.insert(udaf.name().into(), udaf))
     }
     fn register_udwf(&mut self, udwf: Arc<WindowUDF>) -> 
Result<Option<Arc<WindowUDF>>> {
         udwf.aliases().iter().for_each(|alias| {
-            self.window_functions.insert(alias.clone(), udwf.clone());
+            self.window_functions
+                .insert(alias.clone(), Arc::clone(&udwf));
         });
         Ok(self.window_functions.insert(udwf.name().into(), udwf))
     }
     fn register_udf(&mut self, udf: Arc<ScalarUDF>) -> 
Result<Option<Arc<ScalarUDF>>> {
         udf.aliases().iter().for_each(|alias| {
-            self.scalar_functions.insert(alias.clone(), udf.clone());
+            self.scalar_functions
+                .insert(alias.clone(), Arc::clone(&udf));
         });
         Ok(self.scalar_functions.insert(udf.name().into(), udf))
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to