#883 closed task (fixed)
[raster] Make every rtpostgis.sql function immutable strict when possible
Reported by: | pracine | Owned by: | pracine |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS Fund Me |
Component: | raster | Version: | master |
Keywords: | Cc: |
Description (last modified by )
The only exception to this should be when a default parameter can not be determined when calling the function.
We must make sure that EVERY functions accepting NULL parameter check for null with if (PG_ARGISNULL(0)) in rt_pg.c. STRICT functions do not have to do such a check.
Exceptions:
-ST_AddBand(torast raster, fromrast raster, fromband int, toband int) because a default value for toband can not be determined before calling the function. Could be replaced by "ST_NumBands(rast) + 1" though…
-ST_AddBand(rast raster, index int, pixeltype text, initialvalue float8, nodataval float8) because nodataval can be NULL meaning do not set a nodata value.
-Every ST_Intersects functions
-Every ST_SetValue functions because NULL means set to nodata
Changed to STRICT:
-ST_MakeEmptyRaster series
-ST_AddBand plpgsql variants
-ST_HasNoBand(rast raster)
-ST_BandIsNodata SQL variants
-ST_BandPath(raster)
-ST_BandPixeltype(raster)
-All ST_Value fucntions
-ST_BandNodataValue(raster)
-ST_BandMetadata SQL variant
-ST_PixelAsPolygon
Still to review:
-ST_MapAlgebra(rast raster, band integer, expression text, nodatavalueexpr text, pixeltype text) nodatavalueexpr could be replaced by "" in the variants and pixeltype by ST_BandPixelType(rast, band). I don't know if this is bad in terms of performance.
Change History (7)
comment:1 by , 14 years ago
Description: | modified (diff) |
---|
comment:2 by , 14 years ago
comment:4 by , 14 years ago
Milestone: | PostGIS 2.0.0 → PostGIS Raster Future |
---|
comment:5 by , 13 years ago
Milestone: | PostGIS Raster Future → PostGIS Future |
---|
comment:6 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
All existing functions that can be IMMUTABLE STRICT have been changed to be IMMUTABLE STRICT. Closing as this ticket is so generic that theoretically this ticket may never close.
You don't want to set to strict for ST_Intersects
See #536 for reason