RFC 42: OGR Layer laundered field lookup
Author: Jürgen Fischer
Contact: jef at norbit dot de
This (mini)RFC proposes a new method in the OGR layer class (and a C API) to lookup the field index of fields, whose names have been altered by drivers (eg. by LAUNDER in OCI or Pg).
There is already a pull request on github ( https://github.com/OSGeo/gdal/pull/23) that implements this RFC. It adds the virtual method OGRLayer::FindFieldIndex?(), that implements the usual mapping, which can be overloaded by drivers. The OCI driver does this to optionally return the index of the LAUNDERed field in case the original field does not exists. The pull request also modifies ogr2ogr to make use of that method and offers a switch -relaxedFieldNameMatch to enable it.
This is a particular problem when using NAS as that usually operates on a pre-existing schema. This schema had to be adapted for Oracle as Oracle has a identifier length restrictions that quite a number of identifiers in NAS exceed. Hence ogr2ogr failed to make the mapping between the short names and their long counter parts and leaves those fields empty.
- PostgreSQL NAS schema: http://trac.wheregroup.com/PostNAS/browser/trunk/import/alkis_PostNAS_schema.sql
- Oracle NAS schema: http://trac.wheregroup.com/PostNAS/browser/trunk/import/alkis_PostNAS_ORACLE_schema.sql
- conversion script from Pg to OCI: http://trac.wheregroup.com/PostNAS/browser/trunk/import/pg-to-oci.pl
+1 from DanielM, EvenR, FrankW, TamasS, JukkaR and jef