Buggy code:
public class QueryImpl implements Query { private static final Localizer _loc = Localizer . forPackage ( QueryImpl . class ) ; private final String _language ; private final StoreQuery _storeQuery ; private final transient BrokerImpl _broker ; private final transient Log _log ; private transient ClassLoader _loader = null ; private ReentrantLock _lock ; private Class _class = null ; private boolean _subclasses = true ; private boolean _readOnly = false ; private String _query = null ; private String _params = null ; private transient QueryImpl . Compilation _compiled = null ; private transient boolean _compiling = false ; private transient ResultPacker _packer = null ; private transient Collection _collection = null ; private transient Extent _extent = null ; private Map _filtListeners = null ; private Map _aggListeners = null ; private FetchConfiguration _fc = null ; private boolean _ignoreChanges = false ; private Class _resultMappingScope = null ; private String _resultMappingName = null ; private Boolean _unique = null ; private Class _resultClass = null ; private transient long _startIdx = 0 ; private transient long _endIdx = Long . MAX_VALUE ; private transient boolean _rangeSet = false ; private final transient Collection _resultLists = new ReferenceHashSet ( ReferenceHashSet . WEAK ) ; public QueryImpl ( Broker broker , String language , StoreQuery storeQuery ) { } public StoreQuery getStoreQuery ( ) { } public Broker getBroker ( ) { } public Query getQuery ( ) { } public StoreContext getStoreContext ( ) { } public String getLanguage ( ) { } public FetchConfiguration getFetchConfiguration ( ) { } public String getQueryString ( ) { } public boolean getIgnoreChanges ( ) { } public void setIgnoreChanges ( boolean flag ) { } public boolean isReadOnly ( ) { } public void setReadOnly ( boolean flag ) { } public void addFilterListener ( FilterListener listener ) { } public void removeFilterListener ( FilterListener listener ) { } public Collection getFilterListeners ( ) { } public FilterListener getFilterListener ( String tag ) { } public void addAggregateListener ( AggregateListener listener ) { } public void removeAggregateListener ( AggregateListener listener ) { } public Collection getAggregateListeners ( ) { } public AggregateListener getAggregateListener ( String tag ) { } public Extent getCandidateExtent ( ) { } public void setCandidateExtent ( Extent candidateExtent ) { } public Collection getCandidateCollection ( ) { } public void setCandidateCollection ( Collection candidateCollection ) { } public Class getCandidateType ( ) { } public void setCandidateType ( Class candidateClass , boolean subs ) { } public boolean hasSubclasses ( ) { } public String getResultMappingName ( ) { } public Class getResultMappingScope ( ) { } public void setResultMapping ( Class scope , String name ) { } public boolean isUnique ( ) { } public void setUnique ( boolean unique ) { } public Class getResultType ( ) { } public void setResultType ( Class cls ) { } public long getStartRange ( ) { } public long getEndRange ( ) { } public void setRange ( long start , long end ) { } public String getParameterDeclaration ( ) { } public void declareParameters ( String params ) { } public void compile ( ) { } public Object getCompilation ( ) { } private QueryImpl . Compilation compileForCompilation ( ) { } protected QueryImpl . Compilation compilationFromCache ( ) { Map compCache = _broker . getConfiguration ( ) . getQueryCompilationCacheInstance ( ) ; <START_BUG> if ( compCache == null ) { <END_BUG> return newCompilation ( ) ; } else { QueryImpl . CompilationKey key = new QueryImpl . CompilationKey ( ) ; key . queryType = _storeQuery . getClass ( ) ; key . candidateType = getCandidateType ( ) ; key . subclasses = hasSubclasses ( ) ; key . query = getQueryString ( ) ; key . language = getLanguage ( ) ; key . storeKey = _storeQuery . newCompilationKey ( ) ; QueryImpl . Compilation comp = ( ( QueryImpl . Compilation ) ( compCache . get ( key ) ) ) ; boolean cache = false ; if ( comp == null ) { comp = newCompilation ( ) ; cache = ( comp . storeData ) != null ; } else _storeQuery . populateFromCompilation ( comp . storeData ) ; if ( cache ) compCache . put ( key , comp ) ; return comp ; } } private QueryImpl . Compilation newCompilation ( ) { } private Executor compileForExecutor ( ) { } private Executor compileForDataStore ( QueryImpl . Compilation comp ) { } private Executor compileForInMemory ( QueryImpl . Compilation comp ) { } private Executor createExecutor ( boolean inMem ) { } private boolean invalidateCompilation ( ) { } public Object execute ( ) { } public Object execute ( Object [ ] params ) { } public Object execute ( Map params ) { } private Object execute ( int operation , Object [ ] params ) { } private Object execute ( int operation , Map params ) { } public long deleteAll ( ) { } public long deleteAll ( Object [ ] params ) { } public long deleteAll ( Map params ) { } public long updateAll ( ) { } public long updateAll ( Object [ ] params ) { } public long updateAll ( Map params ) { } private boolean isInMemory ( int operation ) { } private Object execute ( StoreQuery q , StoreQuery . Executor ex , Object [ ] params ) throws Exception { } private Number delete ( StoreQuery q , StoreQuery . Executor ex , Object [ ] params ) throws Exception { } public Number deleteInMemory ( StoreQuery q , StoreQuery . Executor executor , Object [ ] params ) { } private Number update ( StoreQuery q , StoreQuery . Executor ex , Object [ ] params ) throws Exception { }

Fix:
if ( ( compCache == null ) || ( ( getQueryString ( ) ) == null ) ) {