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]
