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]

Reply via email to