james-willis opened a new pull request, #1203: URL: https://github.com/apache/sedona-db/pull/1203
Follow-up to #1159: broaden the parity coverage for the two functions the suite already exercises, `RS_BandNoDataValue` and `RS_SetBandNoDataValue`. The suite grows from 6 tests to 34 (21 pass, 13 xfail). Every case was first probed against both engines (SedonaDB at this branch, Sedona Spark 1.9.1 on pyspark 4.0.4), so each xfail reason states the observed behavior of each engine rather than a guess. ### New coverage that passes (the engines agree) - `RS_BandNoDataValue` across all eight GDAL-writable band dtypes (adds int8, uint16, int16, uint32, float32) - the nodata sentinel planted into the pixels — metadata reads/writes don't mask pixel content - setter on band 2 leaves band 1 alone; overwriting an existing nodata; idempotent re-set - 2-arg setter form on a single-band raster - both engines refuse: nodata the band dtype cannot hold (300.5 on uint8, 0.5 on int32, NaN on int32), out-of-range setter band indexes, and the 4-arg `replace` form (Sedona's Java layer ships the overload, but the 1.9.1 SQL binding fails to evaluate it) - NULL band index or NULL nodata into the setter yields a NULL raster on both ### Divergences cataloged as xfails | case | SedonaDB | Sedona Spark | |---|---|---| | NaN file nodata, read back (float32/float64) | NaN | NULL | | NaN set as nodata, read back | NaN | NULL | | fractional file nodata on int band (0.5) | packs into band dtype → 0.0 | GDAL metadata verbatim → 0.5 | | getter with out-of-range band (0, 3, -1) | NULL (deliberate, per `rs_band_accessors.rs`) | raises | | getter/setter with NULL band index | getter coalesces to band 1 (`unwrap_or(1)`) | NULL | | NULL raster typed via `CASE` | loses the raster extension type; no kernel matches | NULL | | setter with -1.0 on uint8 | rejects (not a valid UInt8) | accepts, reports -1.0 | | 2-arg setter on multi-band raster | rejects (deliberate) | defaults to band 1 | Per the suite's convention these xfails double as the fix catalog — each flips to xpass when the gap closes on either side. Which side should move is left open per case (several SedonaDB behaviors are documented as deliberate). This suite is not wired into CI; the counts above are from a local run (`21 passed, 13 xfailed in 13s` on a warm JVM). -- 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]
