PostgreSQL foreign data wrapper for OGR
OGR is the vector half of the GDAL spatial data access library. It allows
access to a large number of GIS data formats using a simple C API for data
reading and writing. Since OGR exposes a simple table structure and PostgreSQL
foreign data wrappers allow access to table structures, the fit seems pretty
This implementation currently has the following limitations:
* Only non-spatial query restrictions are pushed down to the OGR driver.
PostgreSQL foreign data wrappers support delegating portions of the SQL
query to the underlying data source, in this case OGR. This implementation
currently pushes down only non-spatial query restrictions, and only for the
small subset of comparison operators (>, <, <=, >=, =) supported by OGR.
* Spatial restrictions are not pushed down. OGR can handle basic bounding box
restrictions and even (for some drivers) more explicit intersection
restrictions, but those are not passed to the OGR driver yet.
* OGR connections every time Rather than pooling OGR connections, each query
makes (and disposes of) two new ones, which seems to be the largest
performance drag at the moment for restricted (small) queries.
* All columns are retrieved every time. PostgreSQL foreign data wrappers don't
require all columns all the time, and some efficiencies can be gained by
only requesting the columns needed to fulfill a query. This would be a
minimal efficiency improvement, but can be removed given some development
time, since the OGR API supports returning a subset of columns.