Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#3706 closed defect (fixed)

Clearing OGR Attribute Filter on ESRI Personal Geodatabase

Reported by: joelodom Owned by: Even Rouault
Priority: normal Milestone: 1.7.3
Component: OGR_SF Version: 1.7.2
Severity: normal Keywords: pgeo
Cc: joelodom

Description

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 ); there should there be an additional bit of logic that sets this->pszQuery to NULL if pszQuery is NULL. For example,

this->pszQuery = pszQuery ? CPLStrdup( pszQuery ) : 0;

Change History (4)

comment:1 by joelodom, 14 years ago

Cc: joelodom added

comment:2 by Even Rouault, 14 years ago

Owner: changed from warmerdam to Even Rouault

comment:3 by Even Rouault, 14 years ago

Keywords: pgeo added
Milestone: 1.8.01.7.3
Resolution: fixed
Status: newclosed

Fixed in trunk (r20190) and in branches/1.7 (r20191). Thanks

comment:4 by Even Rouault, 14 years ago

Test added in r20197

Note: See TracTickets for help on using tickets.