[postgis-devel] [PostGIS] #883: [raster] Make every rtpostgis.sql function immutable strict when possible

PostGIS trac at osgeo.org
Wed Mar 23 12:11:23 PDT 2011


#883: [raster] Make every rtpostgis.sql function immutable strict when possible
----------------------------+-----------------------------------------------
 Reporter:  pracine         |       Owner:  pracine      
     Type:  task            |      Status:  new          
 Priority:  medium          |   Milestone:  PostGIS 2.0.0
Component:  postgis raster  |     Version:  trunk        
 Keywords:                  |  
----------------------------+-----------------------------------------------
 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.

-- 
Ticket URL: <http://trac.osgeo.org/postgis/ticket/883>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-devel mailing list