/** * Optimizes the condition tree. */ protected void optimize() { if (compiledFilter != null) optimizeBranch(null, compiledFilter.getRootCondition()); }
public void optimize(OSQLFilter filter, OIndexSearchResult indexMatch) { filter.setRootCondition(optimize(filter.getRootCondition(), indexMatch)); }
private boolean matchesFilters(OIdentifiable value) { if (this.compiledFilter == null || this.compiledFilter.getRootCondition() == null) { return true; } if (!(value instanceof ODocument)) { value = value.getRecord(); } return !(Boolean.FALSE.equals(compiledFilter.evaluate((ODocument) value, (ODocument) value, getContext()))); }
private void mergeRangeConditionsToBetweenOperators(OSQLFilter filter) { OSQLFilterCondition condition = filter.getRootCondition(); OSQLFilterCondition newCondition = convertToBetweenClause(condition); if (newCondition != null) { filter.setRootCondition(newCondition); metricRecorder.recordRangeQueryConvertedInBetween(); return; } mergeRangeConditionsToBetweenOperators(condition); }
if ((compiledFilter == null || (compiledFilter.getRootCondition() == null)) && groupByFields == null && projections != null && projections.size() == 1) {
Object value = VALUE_NOT_FOUND; if (compiledFilter == null || compiledFilter.getRootCondition() == null) { if (returning.equalsIgnoreCase("COUNT")) { if (KEYWORD_KEY.equalsIgnoreCase(compiledFilter.getRootCondition().getLeft().toString())) key = getIndexKey(index.getDefinition(), compiledFilter.getRootCondition().getRight()); else if (KEYWORD_RID.equalsIgnoreCase(compiledFilter.getRootCondition().getLeft().toString())) { value = OSQLHelper.getValue(compiledFilter.getRootCondition().getRight()); } else if (compiledFilter.getRootCondition().getLeft() instanceof OSQLFilterCondition) { final OSQLFilterCondition leftCondition = (OSQLFilterCondition) compiledFilter.getRootCondition().getLeft(); if (KEYWORD_KEY.equalsIgnoreCase(leftCondition.getLeft().toString())) key = getIndexKey(index.getDefinition(), leftCondition.getRight()); final OSQLFilterCondition rightCondition = (OSQLFilterCondition) compiledFilter.getRootCondition().getRight(); if (KEYWORD_RID.equalsIgnoreCase(rightCondition.getLeft().toString())) value = OSQLHelper.getValue(rightCondition.getRight());
protected ORID[] getRange() { final ORID beginRange; final ORID endRange; final OSQLFilterCondition rootCondition = compiledFilter == null ? null : compiledFilter.getRootCondition(); if (compiledFilter == null || rootCondition == null) { if (request instanceof OSQLSynchQuery) beginRange = ((OSQLSynchQuery<ODocument>) request).getNextPageRID(); else beginRange = null; endRange = null; } else { final ORID conditionBeginRange = rootCondition.getBeginRidRange(); final ORID conditionEndRange = rootCondition.getEndRidRange(); final ORID nextPageRid; if (request instanceof OSQLSynchQuery) nextPageRid = ((OSQLSynchQuery<ODocument>) request).getNextPageRID(); else nextPageRid = null; if (conditionBeginRange != null && nextPageRid != null) beginRange = conditionBeginRange.compareTo(nextPageRid) > 0 ? conditionBeginRange : nextPageRid; else if (conditionBeginRange != null) beginRange = conditionBeginRange; else beginRange = nextPageRid; endRange = conditionEndRange; } return new ORID[] { beginRange, endRange }; }
.analyzeMainCondition(compiledFilter.getRootCondition(), iSchemaClass, context); if (conditionHierarchy == null) return null;
.analyzeMainCondition(compiledFilter.getRootCondition(), iSchemaClass, context); if (conditionHierarchy == null) return false; if (cursors.size() == 1 && (compiledFilter == null || compiledFilter.getRootCondition() == null) && groupByFields == null && projections != null && projections.size() == 1) {
if (compiledFilter != null && compiledFilter.getRootCondition() != null) { if (!"KEY".equalsIgnoreCase(compiledFilter.getRootCondition().getLeft().toString())) { throw new OCommandExecutionException("'Key' field is required for queries against indexes"); final OQueryOperator indexOperator = compiledFilter.getRootCondition().getOperator(); final Object[] values = (Object[]) compiledFilter.getRootCondition().getRight(); fetchEntriesFromIndexCursor(cursor); } else if (indexOperator instanceof OQueryOperatorMajor) { final Object value = compiledFilter.getRootCondition().getRight(); final Object value = compiledFilter.getRootCondition().getRight(); final OIndexCursor cursor = index.iterateEntriesMajor(getIndexKey(index.getDefinition(), value, context), true, ascOrder); fetchEntriesFromIndexCursor(cursor); final Object value = compiledFilter.getRootCondition().getRight(); final Object value = compiledFilter.getRootCondition().getRight(); final List<Object> origValues = (List<Object>) compiledFilter.getRootCondition().getRight(); final List<Object> values = new ArrayList<Object>(origValues.size()); for (Object val : origValues) { fetchEntriesFromIndexCursor(cursor); } else { final Object right = compiledFilter.getRootCondition().getRight(); Object keyValue = getIndexKey(index.getDefinition(), right, context); if (keyValue == null) {