[gdal-dev] OGR FileGDB driver: 'OBJECTID' not recognised as an available field

Tamas Szekeres szekerest at gmail.com
Wed Sep 4 13:13:40 PDT 2019


Hi,

It looks like  the sql queries with -dialect "OGRSQL" doesn't seem to work
as expected. When I specify the FID in the where clause, it doesn't filter
anything. The same query is also described as a solution in the following
ticket https://trac.osgeo.org/gdal/ticket/4253 but I doubt if that works at
all.

The code causing this problem is fairly generic (ogr_gensql.cpp)

if( psSelectInfo->where_expr && pszDialect != nullptr &&
            EQUAL(pszDialect, "OGRSQL") )
        {
            int nMinIndexForSpecialField =
poSrcLayer->GetLayerDefn()->GetFieldCount();
            bForwardWhereToSourceLayer =
!OGRGenSQLResultsLayerHasSpecialField
                            (psSelectInfo->where_expr,
nMinIndexForSpecialField);
        }
        if (bForwardWhereToSourceLayer)
            pszWHERE = CPLStrdup(pszWHEREIn);
        else
            pszWHERE = nullptr;

In the "where" expression, the FID field is thanslated to OBJECTID and it
is now treated as a special field, therefore the "where" expression is not
being passed to the driver.

I'm also unsure if that is a correct action to omit passing "where" to the
layer instead of providing an error message.

Is this a bug that should be fixed, or the OGRSQL dialect is considered as
unsupported with OpenFileGDB?


Best regards,

Tamas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20190904/8038f557/attachment.html>


More information about the gdal-dev mailing list