Opened 10 years ago

Closed 9 years ago

Last modified 4 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: main
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 Changed 10 years ago by pracine

Description: modified (diff)

comment:2 Changed 10 years ago by robe

You don't want to set to strict for ST_Intersects

See #536 for reason

comment:3 Changed 10 years ago by pracine

Did not :-)

comment:4 Changed 10 years ago by pracine

Milestone: PostGIS 2.0.0PostGIS Raster Future

comment:5 Changed 9 years ago by pracine

Milestone: PostGIS Raster FuturePostGIS Future

comment:6 Changed 9 years ago by Bborie Park

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 Changed 4 years ago by robe

Milestone: PostGIS FuturePostGIS Fund Me

Milestone renamed

Note: See TracTickets for help on using tickets.