tuptable = SPI_tuptable;
tuple = tuptable->vals[0];
- newval = atof(SPI_getvalue(tuple, tupdesc, 1));
+ newexpr = SPI_getvalue(tuple, tupdesc, 1);
+ if ( ! newexpr ) {
+ POSTGIS_RT_DEBUG(3, "Constant expression evaluated to NULL, keeping initvalue");
+ newval = newinitialvalue;
+ } else {
+ newval = atof(newexpr);
+ }
SPI_freetuptable(tuptable);
tuptable = SPI_tuptable;
tuple = tuptable->vals[0];
- newval = atof(SPI_getvalue(tuple, tupdesc, 1));
+ tmp = SPI_getvalue(tuple, tupdesc, 1);
+ if ( tmp ) {
+ newval = atof(tmp);
+ } else {
+ POSTGIS_RT_DEBUGF(3, "Expression for pixel %d,%d (value %g) evaluated to NULL, skip setting", x+1,y+1,r);
+ newval = newinitialvalue;
+ }
SPI_freetuptable(tuptable);
generate_series(6, 8) as x,
generate_series(2, 4) as y
ORDER BY x, y;
+
+-- Test evaluations to null (see #1523)
+SELECT 'T11.1', ST_Value(rast, 1, 1), ST_Value(ST_MapAlgebraExpr(rast, 1, NULL, 'g from (select NULL as g) as foo', 2), 1, 1) FROM ST_TestRaster(0, 0, 10) rast;
+SELECT 'T11.2', ST_Value(rast, 1, 1), ST_Value(ST_MapAlgebraExpr(rast, 1, NULL, 'g from (select RAST,NULL as g) as foo', 2), 1, 1) FROM ST_TestRaster(0, 0, 10) rast;