I'm encountering an issue where once I've set an attribute filter on an ESRI
personal geodatabase, I cannot clear that filter.  If I pass NULL to
SetAttributeFilter, the filter is internally set to "", which makes future
queries return zero results instead of all rows.  Examining the personal
geodatabase driver code, I find:

OGRErr OGRPGeoTableLayer::SetAttributeFilter( const char *pszQuery )
{
    if( (pszQuery == NULL && this->pszQuery == NULL)
        || (pszQuery != NULL && this->pszQuery != NULL
            && EQUAL(pszQuery,this->pszQuery)) )
        return OGRERR_NONE;

    CPLFree( this->pszQuery );
    this->pszQuery = CPLStrdup( pszQuery );

    ClearStatement();

    return OGRERR_NONE;
}

Around the line, "this->pszQuery = CPLStrdup( pszQuery );" should there be
an additional bit of logic that sets this->pszQuery to NULL if pszQuery is
NULL?  I've searched this mailing list and find no reference to this.  Is
there a possible work around?  Thanks.



-- 
http://www.operationliberate.com/
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to