[gdal-dev] Clearing OGR Attribute Filter on ESRI Personal Geodatabase

Frank Warmerdam warmerdam at pobox.com
Fri Jul 30 09:54:56 EDT 2010


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, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent



More information about the gdal-dev mailing list