jiayuasu opened a new pull request, #3262:
URL: https://github.com/apache/sedona/pull/3262

   ## Did you read the Contributor Guide?
   
   - Yes, I have read the [Contributor 
Rules](https://sedona.apache.org/latest/community/rule/) and [Contributor 
Development Guide](https://sedona.apache.org/latest/community/develop/).
   
   ## Is this PR related to a ticket?
   
   - Yes, and the PR name follows the format `[GH-XXX] my subject`.
   
   Closes #3260.
   Part of #2230.
   
   ## What changes were proposed in this PR?
   
   - Add a native `ST_EqualsIdentical(left, right)` predicate that compares 
exact geometry type, nested structure, component and coordinate order, 
dimensionality, and every XY/Z/M ordinate.
   - Treat colocated NaN ordinates as equal, treat positive and negative zero 
as equal, and ignore SRID and other geometry metadata.
   - Register and expose the predicate through Spark SQL and DataFrame APIs, 
Spark Connect, Flink SQL, Snowflake WKB and native `GEOMETRY` UDF paths, and 
the Python Spark SQL API.
   - Implement distributed `GeoSeries.geom_equals_identical(other, align=None)` 
and GeoDataFrame active-geometry delegation without Python UDF execution or 
driver collection of geometry rows.
   - Preserve GeoPandas null-to-false behavior, CRS warnings, scalar 
comparisons, duplicate-index and MultiIndex alignment, output naming, and 
native execution plans.
   - Preserve M and ZM layouts in the native Python GeometryUDT serializer 
using optional GEOS 3.12 measure detection while retaining compatibility with 
older supported GEOS versions. The pure-Python fallback rejects M/ZM rather 
than silently discarding measures.
   - Document `ST_EqualsIdentical` for Spark, Flink, and Snowflake, including 
Snowflake's stored 2D precision boundary, and update release notes and both 
GeoPandas tutorials.
   
   ## How was this patch tested?
   
   - Full common test suite: 1,297 tests passed.
   - Spark predicate suite: 37 tests passed.
   - Spark DataFrame API suite: 261 tests passed.
   - Focused Flink predicate test: passed.
   - Snowflake DDL tests: 3 tests passed; both modified Snowflake tester 
sources compiled successfully.
   - Full GeoSeries and GeoPandas-parity files: 417 tests passed and 1 skipped.
   - Focused Python SQL wrapper tests: 3 tests passed.
   - Native serializer tests: 18 tests passed with Shapely 2.1/GEOS 3.13; the 
legacy Shapely 2.0/GEOS 3.11 compatibility regressions passed.
   - Regression coverage includes XY/Z/M/ZM distinctions, NaN and infinity 
handling, typed empties, ring and component ordering, mixed coordinate-sequence 
factories, SRID independence, null propagation, scalar M/ZM comparisons, 
duplicate and MultiIndex alignment, CRS warnings, and absence of Python 
execution nodes.
   - The repository pre-commit suite, Spotless, Black, Markdown linting, 
documentation build, and `git diff --check` passed.
   
   ## Did this PR include necessary documentation updates?
   
   - Yes, I am adding a new API. I used the current SNAPSHOT version, `v2.0.0`.
   - Yes, I added Spark, Flink, and Snowflake SQL documentation, release notes, 
and English and Chinese GeoPandas tutorial updates.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to