Ticket #883 (new task)

Opened 14 months ago

Last modified 3 months ago

[raster] Make every rtpostgis.sql function immutable strict when possible

Reported by: pracine Owned by: pracine
Priority: medium Milestone: PostGIS Future
Component: raster Version: trunk
Keywords: Cc:

Description (last modified by pracine) (diff)

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

Changed 14 months ago by pracine

  • description modified (diff)

Changed 14 months ago by robe

You don't want to set to strict for ST_Intersects

See #536 for reason

Changed 14 months ago by pracine

Did not :-)

Changed 14 months ago by pracine

  • milestone changed from PostGIS 2.0.0 to PostGIS Raster Future

Changed 3 months ago by pracine

  • milestone changed from PostGIS Raster Future to PostGIS Future
Note: See TracTickets for help on using tickets.