From a73b049ea8a6367b13afc7b016fd64ccf69825d8 Mon Sep 17 00:00:00 2001 From: sundy-li <543950155@qq.com> Date: Fri, 15 Nov 2024 14:45:18 +0800 Subject: [PATCH 1/2] chore(query): remove SliceExt --- src/common/base/src/lib.rs | 1 - src/common/base/src/slice_ext.rs | 62 ------------------- src/query/expression/src/kernels/take.rs | 3 +- src/query/expression/src/types/string.rs | 6 +- .../aggregator/transform_aggregate_expand.rs | 2 +- 5 files changed, 5 insertions(+), 69 deletions(-) delete mode 100644 src/common/base/src/slice_ext.rs diff --git a/src/common/base/src/lib.rs b/src/common/base/src/lib.rs index 790a43c49dd0d..b66ab4a8eecde 100644 --- a/src/common/base/src/lib.rs +++ b/src/common/base/src/lib.rs @@ -35,7 +35,6 @@ pub mod http_client; pub mod mem_allocator; pub mod rangemap; pub mod runtime; -pub mod slice_ext; pub mod vec_ext; pub mod version; diff --git a/src/common/base/src/slice_ext.rs b/src/common/base/src/slice_ext.rs deleted file mode 100644 index a2ff8e30cea22..0000000000000 --- a/src/common/base/src/slice_ext.rs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2021 Datafuse Labs -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use std::slice::SliceIndex; - -pub trait GetSaferUnchecked { - /// # Safety - /// - /// Calling this method with an out-of-bounds index is *[undefined behavior]* - /// even if the resulting reference is not used. - unsafe fn get_unchecked_release(&self, index: I) -> &>::Output - where I: SliceIndex<[T]>; - - /// # Safety - /// - /// Calling this method with an out-of-bounds index is *[undefined behavior]* - /// even if the resulting reference is not used. - unsafe fn get_unchecked_release_mut( - &mut self, - index: I, - ) -> &mut >::Output - where - I: SliceIndex<[T]>; -} - -impl GetSaferUnchecked for [T] { - #[inline(always)] - unsafe fn get_unchecked_release(&self, index: I) -> &>::Output - where I: SliceIndex<[T]> { - if cfg!(debug_assertions) { - &self[index] - } else { - unsafe { self.get_unchecked(index) } - } - } - - #[inline(always)] - unsafe fn get_unchecked_release_mut( - &mut self, - index: I, - ) -> &mut >::Output - where - I: SliceIndex<[T]>, - { - if cfg!(debug_assertions) { - &mut self[index] - } else { - unsafe { self.get_unchecked_mut(index) } - } - } -} diff --git a/src/query/expression/src/kernels/take.rs b/src/query/expression/src/kernels/take.rs index f4957a1c19f3e..e142be5b4140a 100644 --- a/src/query/expression/src/kernels/take.rs +++ b/src/query/expression/src/kernels/take.rs @@ -19,7 +19,6 @@ use databend_common_arrow::arrow::array::Array; use databend_common_arrow::arrow::array::Utf8ViewArray; use databend_common_arrow::arrow::bitmap::Bitmap; use databend_common_arrow::arrow::buffer::Buffer; -use databend_common_base::slice_ext::GetSaferUnchecked; use databend_common_exception::Result; use string::StringColumnBuilder; @@ -258,7 +257,7 @@ where I: databend_common_arrow::arrow::types::Index let result: Vec = self .indices .iter() - .map(|index| unsafe { *col.get_unchecked_release(index.to_usize()) }) + .map(|index| unsafe { *col.get_unchecked(index.to_usize()) }) .collect(); result.into() } diff --git a/src/query/expression/src/types/string.rs b/src/query/expression/src/types/string.rs index bc06218b358fa..9350cd5a5bf39 100644 --- a/src/query/expression/src/types/string.rs +++ b/src/query/expression/src/types/string.rs @@ -293,8 +293,8 @@ impl StringColumn { } pub fn compare(col_i: &Self, i: usize, col_j: &Self, j: usize) -> Ordering { - let view_i = unsafe { col_i.data.views().as_slice().get_unchecked_release(i) }; - let view_j = unsafe { col_j.data.views().as_slice().get_unchecked_release(j) }; + let view_i = unsafe { col_i.data.views().as_slice().get_unchecked(i) }; + let view_j = unsafe { col_j.data.views().as_slice().get_unchecked(j) }; if view_i.prefix == view_j.prefix { unsafe { @@ -311,7 +311,7 @@ impl StringColumn { } pub fn compare_str(col: &Self, i: usize, value: &str) -> Ordering { - let view = unsafe { col.data.views().as_slice().get_unchecked_release(i) }; + let view = unsafe { col.data.views().as_slice().get_unchecked(i) }; let prefix = load_prefix(value.as_bytes()); if view.prefix == prefix { diff --git a/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs b/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs index 1ad959885b10e..9e11f124f9cab 100644 --- a/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs +++ b/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs @@ -66,7 +66,7 @@ impl Transform for TransformExpandGroupingSets { for i in 0..num_group_bys { let entry = unsafe { let offset = self.group_bys.get_unchecked(i); - columns.get_unchecked_mut(*offset) + columns.get_unchecked_mut_release(*offset) }; if bits & (1 << i) == 0 { // This column should be set to NULLs. From 8195fe670c6e0c4b2473b326b87a5166f8646a18 Mon Sep 17 00:00:00 2001 From: sundy-li <543950155@qq.com> Date: Fri, 15 Nov 2024 14:54:49 +0800 Subject: [PATCH 2/2] chore(query): remove SliceExt --- src/query/expression/src/types/string.rs | 1 - .../transforms/aggregator/transform_aggregate_expand.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/query/expression/src/types/string.rs b/src/query/expression/src/types/string.rs index 9350cd5a5bf39..185e2a991fbcd 100644 --- a/src/query/expression/src/types/string.rs +++ b/src/query/expression/src/types/string.rs @@ -18,7 +18,6 @@ use std::ops::Range; use databend_common_arrow::arrow::array::MutableBinaryViewArray; use databend_common_arrow::arrow::array::Utf8ViewArray; use databend_common_arrow::arrow::trusted_len::TrustedLen; -use databend_common_base::slice_ext::GetSaferUnchecked; use databend_common_exception::ErrorCode; use databend_common_exception::Result; diff --git a/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs b/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs index 9e11f124f9cab..1ad959885b10e 100644 --- a/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs +++ b/src/query/service/src/pipelines/processors/transforms/aggregator/transform_aggregate_expand.rs @@ -66,7 +66,7 @@ impl Transform for TransformExpandGroupingSets { for i in 0..num_group_bys { let entry = unsafe { let offset = self.group_bys.get_unchecked(i); - columns.get_unchecked_mut_release(*offset) + columns.get_unchecked_mut(*offset) }; if bits & (1 << i) == 0 { // This column should be set to NULLs.