This is an automated email from the ASF dual-hosted git repository. jiayu 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 5d52cd7 Use distance_ext for evaluating ST_DWithin/ST_Distance in spatial join and upgrade dependencies (#108) 5d52cd7 is described below commit 5d52cd7d8554efef618ad810f56c350d0f923a18 Author: Kristin Cowalcijk <b...@wherobots.com> AuthorDate: Fri Sep 19 13:46:43 2025 +0800 Use distance_ext for evaluating ST_DWithin/ST_Distance in spatial join and upgrade dependencies (#108) --- .github/workflows/dev.yml | 13 ++ Cargo.lock | 145 ++++++++++++++--------- .github/workflows/dev.yml => rust-toolchain.toml | 36 +----- rust/sedona-spatial-join/src/refine/geo.rs | 15 +-- 4 files changed, 110 insertions(+), 99 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 8f01951..ff86600 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -38,6 +38,19 @@ jobs: - uses: actions/setup-python@v5 with: python-version: '3.x' + - name: Install pinned Rust toolchain + id: rust + run: | + set -euxo pipefail + # Extract pinned channel from rust-toolchain.toml (keeps single source of truth) + TOOLCHAIN=$(awk -F '"' '/^channel/ {print $2}' rust-toolchain.toml) + echo "Pinned toolchain: ${TOOLCHAIN}" + rustup toolchain install "${TOOLCHAIN}" --profile minimal --no-self-update + rustup component add --toolchain "${TOOLCHAIN}" rustfmt clippy + rustup default "${TOOLCHAIN}" + rustup show active-toolchain + rustc -V + cargo -V - name: pre-commit (cache) uses: actions/cache@v4 with: diff --git a/Cargo.lock b/Cargo.lock index 5466467..30ce6cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1534,9 +1534,9 @@ dependencies = [ [[package]] name = "dary_heap" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728" +checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04" [[package]] name = "dashmap" @@ -2617,7 +2617,7 @@ dependencies = [ [[package]] name = "geo-generic-alg" version = "0.1.0" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#d5b277ef31e54ae30ebbeea2c30c917feeb00222" +source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#a2a4d2d716f637da60eeb29731bd4415af784f76" dependencies = [ "earcutr", "float_next_after", @@ -2652,7 +2652,7 @@ dependencies = [ [[package]] name = "geo-traits" version = "0.2.0" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#d5b277ef31e54ae30ebbeea2c30c917feeb00222" +source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#a2a4d2d716f637da60eeb29731bd4415af784f76" dependencies = [ "geo-types", ] @@ -2669,7 +2669,7 @@ dependencies = [ [[package]] name = "geo-traits-ext" version = "0.1.0" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#d5b277ef31e54ae30ebbeea2c30c917feeb00222" +source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#a2a4d2d716f637da60eeb29731bd4415af784f76" dependencies = [ "approx", "geo-traits 0.2.0", @@ -2681,7 +2681,7 @@ dependencies = [ [[package]] name = "geo-types" version = "0.7.16" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#d5b277ef31e54ae30ebbeea2c30c917feeb00222" +source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#a2a4d2d716f637da60eeb29731bd4415af784f76" dependencies = [ "approx", "num-traits", @@ -2747,7 +2747,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.5+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] @@ -2823,6 +2823,12 @@ dependencies = [ "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "heapless" version = "0.8.0" @@ -2978,9 +2984,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64", "bytes", @@ -3183,12 +3189,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.1" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", ] [[package]] @@ -3325,9 +3331,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.78" +version = "0.3.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" +checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" dependencies = [ "once_cell", "wasm-bindgen", @@ -3471,9 +3477,9 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags", "libc", @@ -4061,9 +4067,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ "toml_edit", ] @@ -4641,9 +4647,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.5" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a37813727b78798e53c2bec3f5e8fe12a6d6f8389bf9ca7802add4c9905ad8" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "aws-lc-rs", "ring", @@ -5206,9 +5212,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "seq-macro" @@ -5218,27 +5224,38 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" dependencies = [ + "serde_core", "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.225" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +dependencies = [ + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", @@ -5247,14 +5264,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -5683,9 +5701,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "05f63835928ca123f1bef57abbcd23bb2ba0ac9ae1235f1e65bda0d06e7786bd" dependencies = [ "rustls", "tokio", @@ -5706,18 +5724,31 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] [[package]] name = "toml_edit" -version = "0.22.27" +version = "0.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ "indexmap", "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ "winnow", ] @@ -5979,27 +6010,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.5+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" dependencies = [ "wasip2", ] [[package]] name = "wasip2" -version = "1.0.0+wasi-0.2.4" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" +checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" dependencies = [ "cfg-if", "once_cell", @@ -6010,9 +6041,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" +checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" dependencies = [ "bumpalo", "log", @@ -6024,9 +6055,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.51" +version = "0.4.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" +checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67" dependencies = [ "cfg-if", "js-sys", @@ -6037,9 +6068,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" +checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6047,9 +6078,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" +checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" dependencies = [ "proc-macro2", "quote", @@ -6060,9 +6091,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" +checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" dependencies = [ "unicode-ident", ] @@ -6082,9 +6113,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.78" +version = "0.3.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" +checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc" dependencies = [ "js-sys", "wasm-bindgen", @@ -6372,9 +6403,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wkb" @@ -6405,7 +6436,7 @@ dependencies = [ [[package]] name = "wkt" version = "0.13.0" -source = "git+https://github.com/wherobots/wkt.git?branch=generic-alg#ec44269a416b88821a5bf43d17b53def24c68f65" +source = "git+https://github.com/wherobots/wkt.git?branch=generic-alg#ec26b050ec1718ee08e4d8a911e99f1039b60c8b" dependencies = [ "geo-traits 0.2.0", "geo-types", diff --git a/.github/workflows/dev.yml b/rust-toolchain.toml similarity index 51% copy from .github/workflows/dev.yml copy to rust-toolchain.toml index 8f01951..55d5723 100644 --- a/.github/workflows/dev.yml +++ b/rust-toolchain.toml @@ -14,36 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -name: dev -on: - push: - branches: - - main - pull_request: - branches: - - main +# This file specifies the default version of Rust used +# to compile this workspace and run CI jobs. -permissions: - contents: read - -jobs: - pre-commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - persist-credentials: false - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - name: pre-commit (cache) - uses: actions/cache@v4 - with: - path: ~/.cache/pre-commit - key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }} - - name: pre-commit (--all-files) - run: | - python -m pip install pre-commit - pre-commit run --show-diff-on-failure --color=always --all-files +[toolchain] +channel = "1.89.0" +components = ["rustfmt", "clippy"] diff --git a/rust/sedona-spatial-join/src/refine/geo.rs b/rust/sedona-spatial-join/src/refine/geo.rs index 8bc0549..3b555e7 100644 --- a/rust/sedona-spatial-join/src/refine/geo.rs +++ b/rust/sedona-spatial-join/src/refine/geo.rs @@ -17,7 +17,9 @@ use std::sync::{Arc, OnceLock}; use datafusion_common::Result; -use geo_generic_alg::{Contains, Distance, Euclidean, Intersects, Relate, Within}; +use geo_generic_alg::{ + line_measures::DistanceExt, Contains, Distance, Euclidean, Intersects, Relate, Within, +}; use sedona_common::{sedona_internal_err, ExecutionMode, SpatialJoinOptions}; use sedona_expr::statistics::GeoStatistics; use sedona_geo::to_geo::item_to_geometry; @@ -311,16 +313,7 @@ impl GeoPredicateEvaluator for GeoDistance { let Some(distance) = distance else { return Ok(false); }; - let build_geom = match item_to_geometry(build) { - Ok(geom) => geom, - Err(_) => return Ok(false), - }; - let probe_geom = match item_to_geometry(probe) { - Ok(geom) => geom, - Err(_) => return Ok(false), - }; - let euc = Euclidean; - let dist = euc.distance(&build_geom, &probe_geom); + let dist = build.distance_ext(probe); Ok(dist <= distance) }