Opened 14 years ago
Last modified 7 years ago
#883 closed task
[raster] Make every rtpostgis.sql function immutable strict when possible — at Version 1
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.