GDAL/OGR 2.1.2 Release Notes

The 2.1.2 release is a bug fix release.


  • Fix deadlock at CPLWorkerThreadPool destruction (#6646)
  • CPLGetSymbol() on Windows: honour GDAL_FILENAME_IS_UTF8 setting to call LoadLibraryW() (#6650)
  • /vsicurl/: take CPL_VSIL_CURL_ALLOWED_EXTENSIONS into account even if GDAL_DISABLE_READDIR_ON_OPEN is defined (#6681)
  • Fix regression in PLScenes V1 raster random access. Add a CPL_VSIL_CURL_ALLOWED_FILENAME config option to solve that (fixes #6691)
  • /vsimem/: fix potential crash when closing -different- handles pointing to the same file from different threads (fixes #6683)


  • Nodata comparison: fix test when nodata is FLT_MIN or DBL_MIN (#6578)
  • External overview: fix incorrect overview building when generating from greater overview factors to lower ones, in compressed and single-band case (#6617)
  • Make sure that GDALSetCacheMax() initialize the raster block mutex (#6611)
  • Fix potential deadlock in multithreaded writing scenarios (#6661)
  • Make multi-threaded reading/writing when using GetLockedBlock()/MarkDirty()/ DropLock() lower level interfaces (#6665)
  • Fix multi-threading issues in read/write scenarios (fixes #6684)


  • gdal_translate & gdalwarp: lower the default value of GDAL_MAX_DATASET_POOL_SIZE to 100 on MacOSX (#6604)
  • gdalwarp: when -to RPC_DEM is specified, make -et default to 0 as documented (#6608)
  • gdalwarp: fix failure with cutline on a layer of touching polygons (#6694)
  • gdal_translate: when using -projwin with default nearest neighbour resampling, align on integer source pixels (#6610)
  • gdal2xyz: use %d formatting for Int32/UInt32 data types (#6644)

GDAL drivers

AIGRID driver:

  • fix 2.1.0 regression when reading statistics (.sta) file with only 3 values, and fix <2.1 behaviour to read them in LSB order (#6633)

ENVI driver:

  • on closing, pad image file with trailing nul bytes if needed (#6662)

GeoRaster driver:

  • fix for geotransform matrix with rotation terms (#6593)

GPKG driver:

  • check if transaction COMMIT is successful (#6667)
  • fix crash on overview building on big overview factor (#6668)

GTiff driver:

  • fix saving and loading band description (#6592)
  • avoid reading external metadata file that could be related to the target filename when using Create() or CreateCopy() (#6594)
  • do not generate erroneous ExtraSamples tag when translating from a RGB UInt16, without explicit PHOTOMETRIC=RGB (#6647)

HDF4 driver:

  • Fixed erroneous type casting in HDF4Dataset::AnyTypeToDouble() breaking reading georeference data and some other metadata from HDF4-EOS datasets (#6618)

HDF5 driver:

  • correct number of GCPs to avoid dummy trailing (0,0)->(0,0,0) and remove +180 offset applied to GCP longitude. Add instead a heuristics to determine if the product is crossing the antimeridian, and a HDF5_SHIFT_GCPX_BY_180 config option to be able to override the heuristics (#6666)

ISCE driver:

  • make parsing of properties case insensitive (#6637)

netCDF driver:

  • fix crash on datasets with 1D variable with 0 record (#6645)

RMF driver:

ROI_PAC driver:

  • fix computation of line offset for multi-band BIP files, and warn if detecting a wrong file produced by GDAL >= 2.0.0 (#6591)

SRTMHGT driver:

  • accept filenames like NXXEYYY.SRTMGL1.hgt (#6614)

VRT driver:

  • make CheckCompatibleForDatasetIO() return FALSE on VRTDerivedRasterBands (#6599)
  • fix performance issue when nodata set at band level and non-nearest resampling used (#6628)
  • VRTComplexSource: do temp computations on double to avoid precision issues when band data type is Int32/UInt32/CInt32/Float64/CFloat64 (#6642)

OGR utilities

  • GDALVectorTranslate(): imply update mode if access mode not explicitly specified and hDstDS != NULL (#6612)

OGR drivers

Multi driver fix:

  • GPKG/SQLite/PG/FileGDB/MEM: properly set/reset field subtype with AlterFieldDefn() (fixes #6689)

Carto driver:

  • rebranded from CartoDB to Carto. "CartoDB" is still a valid alias to Carto


  • update schema to reflect CURRENT_TIMESTAMP -> 'now' changes (
  • do not emit error when running ExecuteSQL() with a spatial filter on an empty layer (#6639)
  • list (non spatial) layers not registered in gpkg_contents (#6679)
  • robustified layer deletion and renaming (#6679)
  • implementation of DeleteField, AlterFieldDefn and ReorderFields (#6679)
  • GetExtent() to save computed extent in gpkg_contents if empty (#6679)
  • add 'RECOMPUTE EXTENT ON' special SQL (#6679)
  • update last modified date on tiles update (#6679)
  • check identifier unicity on layer creation (#6679)
  • add possibility to disable foreign key check by setting OGR_GPKG_FOREIGN_KEY_CHECK=NO config option (#6679)
  • add HasSpatialIndex(tblname,geomcolname) SQL function (#6679)

GML driver:

  • remove hack for CityGML regarding forcing srsDimension to 3 if not specified. Instead add a GML_SRS_DIMENSION_IF_MISSING config option that can be set to 3 if needed (#6597)
  • consider srsName with URL like '' as following EPSG axis order. Add SWAP_COORDINATES=YES/NO/AUTO (and GML_SWAP_COORDINATES configuration option) to override all auto guessing (#6678)

ILI1 driver:

  • fix crash in OGRILI1Layer::JoinSurfaceLayer() when the multicurve of the feature of the poSurfaceLineLayer layer is empty (fixes #6688)

MSSQLSpatial driver:

  • Fix select layer to recognize geometry column with sqlncli (#6641)

NAS driver:

  • Fix to handle that 'anlass' is optional

OCI driver:

  • 3 new options: MULTI_LOAD, MULTI_LOAD_COUNT, FIRST_ID (#6606)

OSM driver:

PG driver:

  • fix errors caused by missing geometry_columns/spatial_ref_sys tables in non PostGIS databases, that prevent reading more than 500 features (

PLScenes driver:

  • add HTTP retry logic (#6655)
  • V0 API: workaround limitations on filtering on image_statistics.image_quality (#6657)

S57 driver:

  • fix GDAL 2.1.1 regression where open options are ignored if OGR_S57_OPTIONS config option is not defined (#6609)

Shapefile driver:

  • change REPACK implementation on Windows to be robust to remaining file descriptors opened on the .shp/.shx/.dbf (#6672)

SQLite driver:

  • do not emit error when running ExecuteSQL() with a spatial filter on an empty layer (#6639)
  • Spatialite: avoid crash when creating layer with geom_type = wkbCurve (#6660)
  • don't touch nSoftTransactionLevel in DoTransactionCommand() in case of error, since it can cause later CPLAssert() to trigger (#6667)

XLSX driver:

  • only list worksheets (and no charts) as layers (#6680)
Last modified 7 years ago Last modified on Oct 24, 2016, 4:00:46 AM
Note: See TracWiki for help on using the wiki.