Opened 14 years ago

Closed 12 years ago

Last modified 7 years ago

#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 pracine)

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 pracine, 14 years ago

Description: modified (diff)

comment:2 by robe, 14 years ago

You don't want to set to strict for ST_Intersects

See #536 for reason

comment:3 by pracine, 14 years ago

Did not :-)

comment:4 by pracine, 14 years ago

Milestone: PostGIS 2.0.0PostGIS Raster Future

comment:5 by pracine, 13 years ago

Milestone: PostGIS Raster FuturePostGIS Future

comment:6 by dustymugs, 12 years ago

Resolution: fixed
Status: newclosed

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.

comment:7 by robe, 7 years ago

Milestone: PostGIS FuturePostGIS Fund Me

Milestone renamed

Note: See TracTickets for help on using tickets.