[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