Joel Odom wrote:
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.

Joel,

Yes, I think you are right.  I imagine this:

   this->pszQuery = CPLStrdup( pszQuery );

should be replaced with:
    if( pszQuery )
        this->pszQuery = CPLStrdup(pszQuery);
    else
        this->pszQuery = NULL;

Could you file a ticket on this issue at http://trac.osgeo.org/gdal?

Best regards,
--
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmer...@pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent

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

Reply via email to