This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/sedona-db.git
The following commit(s) were added to refs/heads/main by this push:
new 3d75664 chore: Sort imports to prefer module-level imports to
function-level imports (#227)
3d75664 is described below
commit 3d756644caccd33d7a2bba41e646924caddd3203
Author: Abeeujah <[email protected]>
AuthorDate: Fri Oct 17 20:04:30 2025 +0100
chore: Sort imports to prefer module-level imports to function-level
imports (#227)
---
c/sedona-geoarrow-c/src/kernels.rs | 7 ++---
c/sedona-geos/src/binary_predicates.rs | 17 +-----------
c/sedona-geos/src/distance.rs | 3 +--
c/sedona-geos/src/st_area.rs | 3 +--
c/sedona-geos/src/st_dwithin.rs | 3 +--
c/sedona-geos/src/st_length.rs | 3 +--
c/sedona-geos/src/st_perimeter.rs | 3 +--
rust/sedona-functions/src/barrier.rs | 4 +--
rust/sedona-functions/src/st_dimension.rs | 3 +--
rust/sedona-functions/src/st_geometrytype.rs | 3 +--
rust/sedona-functions/src/st_haszm.rs | 2 +-
rust/sedona-functions/src/st_isclosed.rs | 3 +--
rust/sedona-functions/src/st_isempty.rs | 3 +--
rust/sedona-functions/src/st_point.rs | 5 ++--
rust/sedona-geo/src/st_dwithin.rs | 3 +--
rust/sedona-spatial-join/src/exec.rs | 17 ++++++------
rust/sedona-spatial-join/src/index.rs | 39 +++++-----------------------
rust/sedona-spatial-join/src/optimizer.rs | 9 ++-----
rust/sedona/src/context.rs | 2 +-
rust/sedona/src/object_storage.rs | 7 +++--
20 files changed, 40 insertions(+), 99 deletions(-)
diff --git a/c/sedona-geoarrow-c/src/kernels.rs
b/c/sedona-geoarrow-c/src/kernels.rs
index 062d101..caab415 100644
--- a/c/sedona-geoarrow-c/src/kernels.rs
+++ b/c/sedona-geoarrow-c/src/kernels.rs
@@ -154,14 +154,15 @@ mod tests {
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOGRAPHY, WKB_GEOMETRY,
WKB_VIEW_GEOMETRY};
- use sedona_testing::{create::create_scalar_storage,
testers::ScalarUdfTester};
+ use sedona_testing::{
+ create::{create_array, create_scalar_storage},
+ testers::ScalarUdfTester,
+ };
use super::*;
#[rstest]
fn fromwkt(#[values(DataType::Utf8, DataType::Utf8View)] data_type:
DataType) {
- use sedona_testing::create::create_array;
-
let udf = SedonaScalarUDF::from_kernel("st_geomfromwkt",
st_geomfromwkt_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![SedonaType::Arrow(data_type)]);
tester.assert_return_type(WKB_GEOMETRY);
diff --git a/c/sedona-geos/src/binary_predicates.rs
b/c/sedona-geos/src/binary_predicates.rs
index 90ece9b..41ea2ab 100644
--- a/c/sedona-geos/src/binary_predicates.rs
+++ b/c/sedona-geos/src/binary_predicates.rs
@@ -104,6 +104,7 @@ impl<Op: BinaryPredicate> SedonaScalarKernel for
GeosPredicate<Op> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array as arrow_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use rstest::rstest;
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -115,8 +116,6 @@ mod tests {
#[rstest]
fn contains_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_contains",
st_contains_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -154,8 +153,6 @@ mod tests {
#[rstest]
fn covered_by_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_coveredby",
st_covered_by_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -193,8 +190,6 @@ mod tests {
#[rstest]
fn covers_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_covers", st_covers_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -232,8 +227,6 @@ mod tests {
#[rstest]
fn disjoint_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_disjoint",
st_disjoint_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -271,8 +264,6 @@ mod tests {
#[rstest]
fn equals_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_equals", st_equals_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -310,8 +301,6 @@ mod tests {
#[rstest]
fn intersects_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_intersects",
st_intersects_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -349,8 +338,6 @@ mod tests {
#[rstest]
fn within_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_within", st_within_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -388,7 +375,6 @@ mod tests {
#[rstest]
fn crosses_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
let udf = SedonaScalarUDF::from_kernel("st_crosses",
st_crosses_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
@@ -425,7 +411,6 @@ mod tests {
#[rstest]
fn overlaps_udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type:
SedonaType) {
- use datafusion_common::ScalarValue;
let udf = SedonaScalarUDF::from_kernel("st_overlaps",
st_overlaps_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Boolean);
diff --git a/c/sedona-geos/src/distance.rs b/c/sedona-geos/src/distance.rs
index 5af1500..c77b137 100644
--- a/c/sedona-geos/src/distance.rs
+++ b/c/sedona-geos/src/distance.rs
@@ -77,6 +77,7 @@ fn invoke_scalar(geos_geom: &geos::Geometry, other_geos_geom:
&geos::Geometry) -
#[cfg(test)]
mod tests {
use arrow_array::{create_array as arrow_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use rstest::rstest;
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -88,8 +89,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_distance",
st_distance_impl());
let tester = ScalarUdfTester::new(udf.into(),
vec![sedona_type.clone(), sedona_type]);
tester.assert_return_type(DataType::Float64);
diff --git a/c/sedona-geos/src/st_area.rs b/c/sedona-geos/src/st_area.rs
index ba4ea68..b89cc1e 100644
--- a/c/sedona-geos/src/st_area.rs
+++ b/c/sedona-geos/src/st_area.rs
@@ -75,6 +75,7 @@ fn invoke_scalar(geos_geom: &geos::Geometry) -> Result<f64> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use rstest::rstest;
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -84,8 +85,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_area", st_area_impl());
let tester = ScalarUdfTester::new(udf.into(), vec![sedona_type]);
tester.assert_return_type(DataType::Float64);
diff --git a/c/sedona-geos/src/st_dwithin.rs b/c/sedona-geos/src/st_dwithin.rs
index bc7bbd1..4ab466f 100644
--- a/c/sedona-geos/src/st_dwithin.rs
+++ b/c/sedona-geos/src/st_dwithin.rs
@@ -82,6 +82,7 @@ fn invoke_scalar(lhs: &geos::Geometry, rhs: &geos::Geometry,
distance: f64) -> R
#[cfg(test)]
mod tests {
use arrow_array::{create_array as arrow_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use rstest::rstest;
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -93,8 +94,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_dwithin",
st_dwithin_impl());
let tester = ScalarUdfTester::new(
udf.into(),
diff --git a/c/sedona-geos/src/st_length.rs b/c/sedona-geos/src/st_length.rs
index 3860f80..83d5af6 100644
--- a/c/sedona-geos/src/st_length.rs
+++ b/c/sedona-geos/src/st_length.rs
@@ -96,6 +96,7 @@ fn invoke_scalar(geos_geom: &geos::Geometry) -> GResult<f64> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use rstest::rstest;
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -105,8 +106,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_length", st_length_impl());
let tester = ScalarUdfTester::new(udf.into(), vec![sedona_type]);
tester.assert_return_type(DataType::Float64);
diff --git a/c/sedona-geos/src/st_perimeter.rs
b/c/sedona-geos/src/st_perimeter.rs
index e4dbfb1..f8f6a16 100644
--- a/c/sedona-geos/src/st_perimeter.rs
+++ b/c/sedona-geos/src/st_perimeter.rs
@@ -95,6 +95,7 @@ fn invoke_scalar(geos_geom: &geos::Geometry) -> GResult<f64> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use rstest::rstest;
use sedona_expr::scalar_udf::SedonaScalarUDF;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -104,8 +105,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let udf = SedonaScalarUDF::from_kernel("st_perimeter",
st_perimeter_impl());
let tester = ScalarUdfTester::new(udf.into(), vec![sedona_type]);
tester.assert_return_type(DataType::Float64);
diff --git a/rust/sedona-functions/src/barrier.rs
b/rust/sedona-functions/src/barrier.rs
index 3c67ee6..83d7fef 100644
--- a/rust/sedona-functions/src/barrier.rs
+++ b/rust/sedona-functions/src/barrier.rs
@@ -333,7 +333,6 @@ impl Barrier {
/// Compare two scalar values using the given operator
fn compare_values(left: &ScalarValue, op: &str, right: &ScalarValue) ->
Result<bool> {
use ScalarValue::*;
-
match (left, right) {
(Int64(Some(l)), Int64(Some(r))) => match op {
"=" | "==" => Ok(l == r),
@@ -386,6 +385,7 @@ mod tests {
use super::*;
use arrow_array::RecordBatch;
use arrow_schema::{Field, Schema};
+ use datafusion::prelude::SessionContext;
use datafusion_expr::ScalarUDF;
use sedona_testing::testers::ScalarUdfTester;
@@ -652,8 +652,6 @@ mod tests {
expression: &str,
column_values: &[(&str, ScalarValue)],
) -> Result<bool> {
- use datafusion::prelude::SessionContext;
-
// Create schema from column values
let mut fields = vec![];
let mut arrays = vec![];
diff --git a/rust/sedona-functions/src/st_dimension.rs
b/rust/sedona-functions/src/st_dimension.rs
index beb284c..9911e8f 100644
--- a/rust/sedona-functions/src/st_dimension.rs
+++ b/rust/sedona-functions/src/st_dimension.rs
@@ -103,6 +103,7 @@ fn invoke_scalar(item: &Wkb) -> Result<i8> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array as arrow_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use datafusion_expr::ScalarUDF;
use rstest::rstest;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -119,8 +120,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let tester = ScalarUdfTester::new(st_dimension_udf().into(),
vec![sedona_type.clone()]);
tester.assert_return_type(DataType::Int8);
diff --git a/rust/sedona-functions/src/st_geometrytype.rs
b/rust/sedona-functions/src/st_geometrytype.rs
index 6cccf0e..e5cb081 100644
--- a/rust/sedona-functions/src/st_geometrytype.rs
+++ b/rust/sedona-functions/src/st_geometrytype.rs
@@ -118,6 +118,7 @@ fn infer_geometry_type_name(buf: &[u8]) -> Result<&'static
str> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use datafusion_expr::ScalarUDF;
use rstest::rstest;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -134,8 +135,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let udf: ScalarUDF = st_geometry_type_udf().into();
let tester = ScalarUdfTester::new(udf, vec![sedona_type]);
tester.assert_return_type(DataType::Utf8);
diff --git a/rust/sedona-functions/src/st_haszm.rs
b/rust/sedona-functions/src/st_haszm.rs
index eeae58f..a4a20ff 100644
--- a/rust/sedona-functions/src/st_haszm.rs
+++ b/rust/sedona-functions/src/st_haszm.rs
@@ -23,6 +23,7 @@ use datafusion_common::error::Result;
use datafusion_expr::{
scalar_doc_sections::DOC_SECTION_OTHER, ColumnarValue, Documentation,
Volatility,
};
+use geo_traits::GeometryCollectionTrait;
use geo_traits::{Dimensions, GeometryTrait};
use sedona_common::sedona_internal_err;
use sedona_expr::scalar_udf::{SedonaScalarKernel, SedonaScalarUDF};
@@ -110,7 +111,6 @@ impl SedonaScalarKernel for STHasZm {
fn invoke_scalar(item: &Wkb, dim_index: usize) -> Result<Option<bool>> {
match item.as_type() {
geo_traits::GeometryType::GeometryCollection(collection) => {
- use geo_traits::GeometryCollectionTrait;
if collection.num_geometries() == 0 {
Ok(Some(false))
} else {
diff --git a/rust/sedona-functions/src/st_isclosed.rs
b/rust/sedona-functions/src/st_isclosed.rs
index 0010f89..2ae6d4a 100644
--- a/rust/sedona-functions/src/st_isclosed.rs
+++ b/rust/sedona-functions/src/st_isclosed.rs
@@ -124,6 +124,7 @@ fn is_geometry_closed(item: &Wkb) -> Result<bool> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array as arrow_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use datafusion_expr::ScalarUDF;
use rstest::rstest;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -140,8 +141,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let tester = ScalarUdfTester::new(st_isclosed_udf().into(),
vec![sedona_type.clone()]);
tester.assert_return_type(DataType::Boolean);
diff --git a/rust/sedona-functions/src/st_isempty.rs
b/rust/sedona-functions/src/st_isempty.rs
index cc06ed2..eae8e7d 100644
--- a/rust/sedona-functions/src/st_isempty.rs
+++ b/rust/sedona-functions/src/st_isempty.rs
@@ -98,6 +98,7 @@ fn invoke_scalar(item: &Wkb) -> Result<bool> {
#[cfg(test)]
mod tests {
use arrow_array::{create_array as arrow_array, ArrayRef};
+ use datafusion_common::ScalarValue;
use datafusion_expr::ScalarUDF;
use rstest::rstest;
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
@@ -114,8 +115,6 @@ mod tests {
#[rstest]
fn udf(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType)
{
- use datafusion_common::ScalarValue;
-
let tester = ScalarUdfTester::new(st_isempty_udf().into(),
vec![sedona_type.clone()]);
tester.assert_return_type(DataType::Boolean);
diff --git a/rust/sedona-functions/src/st_point.rs
b/rust/sedona-functions/src/st_point.rs
index c944d21..42f893a 100644
--- a/rust/sedona-functions/src/st_point.rs
+++ b/rust/sedona-functions/src/st_point.rs
@@ -155,9 +155,11 @@ fn populate_wkb_item(item: &mut [u8], x: &f64, y: &f64) {
#[cfg(test)]
mod tests {
use arrow_array::create_array;
+ use arrow_array::ArrayRef;
use arrow_schema::DataType;
use datafusion_expr::ScalarUDF;
use rstest::rstest;
+ use sedona_testing::compare::assert_array_equal;
use sedona_testing::{create::create_array, testers::ScalarUdfTester};
use super::*;
@@ -179,9 +181,6 @@ mod tests {
#[case(DataType::Float64, DataType::Float32)]
#[case(DataType::Float32, DataType::Float32)]
fn udf_invoke(#[case] lhs_type: DataType, #[case] rhs_type: DataType) {
- use arrow_array::ArrayRef;
- use sedona_testing::compare::assert_array_equal;
-
let udf = st_point_udf();
let lhs_scalar_null =
ScalarValue::Float64(None).cast_to(&lhs_type).unwrap();
diff --git a/rust/sedona-geo/src/st_dwithin.rs
b/rust/sedona-geo/src/st_dwithin.rs
index 25e8bf2..11211a8 100644
--- a/rust/sedona-geo/src/st_dwithin.rs
+++ b/rust/sedona-geo/src/st_dwithin.rs
@@ -88,6 +88,7 @@ mod tests {
use sedona_schema::datatypes::{WKB_GEOMETRY, WKB_VIEW_GEOMETRY};
use sedona_testing::create::create_scalar;
use sedona_testing::testers::ScalarUdfTester;
+ use sedona_testing::{compare::assert_array_equal, create::create_array};
use super::*;
@@ -96,8 +97,6 @@ mod tests {
#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] left_sedona_type:
SedonaType,
#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] right_sedona_type:
SedonaType,
) {
- use sedona_testing::{compare::assert_array_equal,
create::create_array};
-
let udf = SedonaScalarUDF::from_kernel("st_dwithin",
st_dwithin_impl());
let tester = ScalarUdfTester::new(
udf.into(),
diff --git a/rust/sedona-spatial-join/src/exec.rs
b/rust/sedona-spatial-join/src/exec.rs
index effc895..6dc935b 100644
--- a/rust/sedona-spatial-join/src/exec.rs
+++ b/rust/sedona-spatial-join/src/exec.rs
@@ -19,14 +19,18 @@ use std::{fmt::Formatter, sync::Arc};
use arrow_schema::SchemaRef;
use datafusion_common::{project_schema, DataFusionError, JoinSide, Result};
use datafusion_execution::{SendableRecordBatchStream, TaskContext};
-use datafusion_expr::JoinType;
-use datafusion_physical_expr::equivalence::{join_equivalence_properties,
ProjectionMapping};
-use datafusion_physical_expr::PhysicalExpr;
+use datafusion_expr::{JoinType, Operator};
+use datafusion_physical_expr::{
+ equivalence::{join_equivalence_properties, ProjectionMapping},
+ expressions::{BinaryExpr, Column},
+ PhysicalExpr,
+};
use datafusion_physical_plan::{
execution_plan::EmissionType,
joins::utils::{build_join_schema, check_join_is_valid, ColumnIndex,
JoinFilter},
metrics::{ExecutionPlanMetricsSet, MetricsSet},
- DisplayAs, DisplayFormatType, ExecutionPlan, ExecutionPlanProperties,
PlanProperties,
+ DisplayAs, DisplayFormatType, ExecutionPlan, ExecutionPlanProperties,
Partitioning,
+ PlanProperties,
};
use parking_lot::Mutex;
@@ -48,9 +52,6 @@ type BuildProbePlans<'a> = (&'a Arc<dyn ExecutionPlan>, &'a
Arc<dyn ExecutionPla
fn extract_equality_conditions(
filter: &JoinFilter,
) -> Vec<(Arc<dyn PhysicalExpr>, Arc<dyn PhysicalExpr>)> {
- use datafusion_expr::Operator;
- use datafusion_physical_expr::expressions::{BinaryExpr, Column};
-
let mut equalities = Vec::new();
if let Some(binary_expr) =
filter.expression().as_any().downcast_ref::<BinaryExpr>() {
@@ -269,7 +270,7 @@ impl SpatialJoinExec {
// Replicate HashJoin's symmetric partitioning logic
// HashJoin preserves partitioning from both sides for inner joins
// and from one side for outer joins
- use datafusion_physical_plan::Partitioning;
+
match join_type {
JoinType::Inner | JoinType::Left | JoinType::LeftSemi |
JoinType::LeftAnti => {
left.output_partitioning().clone()
diff --git a/rust/sedona-spatial-join/src/index.rs
b/rust/sedona-spatial-join/src/index.rs
index 4e95527..3b0a8b3 100644
--- a/rust/sedona-spatial-join/src/index.rs
+++ b/rust/sedona-spatial-join/src/index.rs
@@ -41,6 +41,7 @@ use parking_lot::Mutex;
use sedona_expr::statistics::GeoStatistics;
use sedona_functions::st_analyze_aggr::AnalyzeAccumulator;
use sedona_geo::to_geo::item_to_geometry;
+use sedona_geo_generic_alg::algorithm::Centroid;
use sedona_schema::datatypes::WKB_GEOMETRY;
use wkb::reader::Wkb;
@@ -587,7 +588,7 @@ impl SpatialIndex {
let max_distance = distances_with_indices[k_idx].0;
// For tie-breakers, create spatial envelope around probe
centroid and use rtree.search()
- use sedona_geo_generic_alg::algorithm::Centroid;
+
let probe_centroid =
probe_geom.centroid().unwrap_or(Point::new(0.0, 0.0));
let probe_x = probe_centroid.x() as f32;
let probe_y = probe_centroid.y() as f32;
@@ -1014,9 +1015,13 @@ mod tests {
use crate::spatial_predicate::{RelationPredicate, SpatialRelationType};
use super::*;
+ use arrow_array::RecordBatch;
+ use arrow_schema::{DataType, Field};
use datafusion_execution::memory_pool::GreedyMemoryPool;
use datafusion_physical_expr::expressions::Column;
+ use geo_traits::Dimensions;
use sedona_common::option::{ExecutionMode, SpatialJoinOptions};
+ use sedona_geometry::wkb_factory::write_wkb_empty_point;
use sedona_schema::datatypes::WKB_GEOMETRY;
use sedona_testing::create::create_array;
@@ -1053,9 +1058,6 @@ mod tests {
#[test]
fn test_spatial_index_builder_add_batch() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
execution_mode: ExecutionMode::PrepareBuild,
@@ -1109,9 +1111,6 @@ mod tests {
#[test]
fn test_knn_query_execution_with_sample_data() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create a spatial index with sample geometry data
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1207,9 +1206,6 @@ mod tests {
#[test]
fn test_knn_query_execution_with_different_k_values() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create spatial index with more data points
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1297,9 +1293,6 @@ mod tests {
#[test]
fn test_knn_query_execution_with_spheroid_distance() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create spatial index
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1393,9 +1386,6 @@ mod tests {
#[test]
fn test_knn_query_execution_edge_cases() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create spatial index
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1530,9 +1520,6 @@ mod tests {
#[test]
fn test_knn_query_execution_with_tie_breakers() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create a spatial index with sample geometry data
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1644,9 +1631,6 @@ mod tests {
#[test]
fn test_query_knn_with_geometry_distance() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create a spatial index with sample geometry data
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1730,9 +1714,6 @@ mod tests {
#[test]
fn test_query_knn_with_mixed_geometries() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create a spatial index with complex geometries where geometry-based
// distance should differ from centroid-based distance
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
@@ -1814,9 +1795,6 @@ mod tests {
#[test]
fn test_query_knn_with_tie_breakers_geometry_distance() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
-
// Create a spatial index with geometries that have identical
distances for tie-breaker testing
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
@@ -1909,11 +1887,6 @@ mod tests {
#[test]
fn test_knn_query_with_empty_geometry() {
- use arrow_array::RecordBatch;
- use arrow_schema::{DataType, Field};
- use geo_traits::Dimensions;
- use sedona_geometry::wkb_factory::write_wkb_empty_point;
-
// Create a spatial index with sample geometry data like other tests
let memory_pool = Arc::new(GreedyMemoryPool::new(1024 * 1024));
let options = SpatialJoinOptions {
diff --git a/rust/sedona-spatial-join/src/optimizer.rs
b/rust/sedona-spatial-join/src/optimizer.rs
index db81641..e996906 100644
--- a/rust/sedona-spatial-join/src/optimizer.rs
+++ b/rust/sedona-spatial-join/src/optimizer.rs
@@ -39,6 +39,7 @@ use datafusion_physical_expr::{PhysicalExpr,
ScalarFunctionExpr};
use datafusion_physical_plan::coalesce_partitions::CoalescePartitionsExec;
use datafusion_physical_plan::joins::utils::ColumnIndex;
use datafusion_physical_plan::joins::{HashJoinExec, NestedLoopJoinExec};
+use datafusion_physical_plan::projection::ProjectionExec;
use datafusion_physical_plan::{joins::utils::JoinFilter, ExecutionPlan};
use sedona_common::{option::SedonaOptions, sedona_internal_err};
use sedona_expr::utils::{parse_distance_predicate, ParsedDistancePredicate};
@@ -505,9 +506,6 @@ impl SpatialJoinOptimizer {
expected_schema: &SchemaRef,
spatial_schema: &SchemaRef,
) -> Result<Arc<dyn ExecutionPlan>> {
- use datafusion_physical_expr::expressions::Column;
- use datafusion_physical_plan::projection::ProjectionExec;
-
// The challenge is to map from the expected HashJoinExec schema to
SpatialJoinExec schema
//
// Expected schema has fields like: [id, name, name] (with duplicates)
@@ -1062,7 +1060,7 @@ mod tests {
use arrow::datatypes::{DataType, Field, Schema};
use datafusion_common::{JoinSide, ScalarValue};
use datafusion_expr::Operator;
- use datafusion_expr::{ColumnarValue, ScalarUDF, SimpleScalarUDF};
+ use datafusion_expr::{col, lit, ColumnarValue, Expr, ScalarUDF,
SimpleScalarUDF};
use datafusion_physical_expr::expressions::{BinaryExpr, Column,
IsNotNullExpr, Literal};
use datafusion_physical_expr::{PhysicalExpr, ScalarFunctionExpr};
use datafusion_physical_plan::joins::utils::ColumnIndex;
@@ -2713,9 +2711,6 @@ mod tests {
#[test]
fn test_is_spatial_predicate() {
- use datafusion_expr::ColumnarValue;
- use datafusion_expr::{col, lit, Expr, ScalarUDF, SimpleScalarUDF};
-
// Test 1: ST_ functions should return true
let st_intersects_udf = create_dummy_st_intersects_udf();
let st_intersects_expr =
Expr::ScalarFunction(datafusion_expr::expr::ScalarFunction {
diff --git a/rust/sedona/src/context.rs b/rust/sedona/src/context.rs
index e75d5d8..ded65aa 100644
--- a/rust/sedona/src/context.rs
+++ b/rust/sedona/src/context.rs
@@ -17,6 +17,7 @@
use std::{collections::VecDeque, sync::Arc};
use crate::exec::create_plan_from_sql;
+use crate::object_storage::ensure_object_store_registered_with_options;
use crate::{
catalog::DynamicObjectStoreCatalog,
random_geometry_provider::RandomGeometryFunction,
@@ -229,7 +230,6 @@ impl SedonaContext {
// Pre-register object store with our custom options before creating
GeoParquetReadOptions
if !urls.is_empty() {
- use
crate::object_storage::ensure_object_store_registered_with_options;
// Extract the table options from GeoParquetReadOptions for object
store registration
let table_options_map =
options.table_options().cloned().unwrap_or_default();
diff --git a/rust/sedona/src/object_storage.rs
b/rust/sedona/src/object_storage.rs
index f6d9065..8de36fd 100644
--- a/rust/sedona/src/object_storage.rs
+++ b/rust/sedona/src/object_storage.rs
@@ -617,16 +617,15 @@ pub(crate) async fn
register_object_store_and_config_extensions(
#[cfg(test)]
mod tests {
- use crate::context::SedonaContext;
-
- use super::*;
-
use datafusion::common::plan_err;
use datafusion::{
datasource::listing::ListingTableUrl,
logical_expr::{DdlStatement, LogicalPlan},
};
+ use super::*;
+ use crate::context::SedonaContext;
+
#[cfg(feature = "aws")]
use object_store::{aws::AmazonS3ConfigKey, gcp::GoogleConfigKey};