/** * constructing the filter resolver tree based on filter expression. * this method will visit each node of the filter resolver and prepares * the surrogates of the filter members which are involved filter * expression. * * @param filterResolverTree * @param tableIdentifier */ private void traverseAndResolveTree(FilterResolverIntf filterResolverTree, AbsoluteTableIdentifier tableIdentifier) throws FilterUnsupportedException, IOException { if (null == filterResolverTree) { return; } traverseAndResolveTree(filterResolverTree.getLeft(), tableIdentifier); filterResolverTree.resolve(tableIdentifier); traverseAndResolveTree(filterResolverTree.getRight(), tableIdentifier); }
private static void traverseResolverTreeAndPopulateStartAndEndKeys( FilterResolverIntf filterResolverTree, SegmentProperties segmentProperties, long[] startKeys, SortedMap<Integer, byte[]> setOfStartKeyByteArray, long[] endKeys, SortedMap<Integer, byte[]> setOfEndKeyByteArray, List<long[]> startKeyList, List<long[]> endKeyList) { if (null == filterResolverTree) { return; } traverseResolverTreeAndPopulateStartAndEndKeys(filterResolverTree.getLeft(), segmentProperties, startKeys, setOfStartKeyByteArray, endKeys, setOfEndKeyByteArray, startKeyList, endKeyList); filterResolverTree .getStartKey(segmentProperties, startKeys, setOfStartKeyByteArray, startKeyList); filterResolverTree.getEndKey(segmentProperties, endKeys, setOfEndKeyByteArray, endKeyList); traverseResolverTreeAndPopulateStartAndEndKeys(filterResolverTree.getRight(), segmentProperties, startKeys, setOfStartKeyByteArray, endKeys, setOfEndKeyByteArray, startKeyList, endKeyList); }
AndExpression andExpression = (AndExpression) expression; ExpressionTuple left = selectDataMap(andExpression.getLeft(), allDataMap, filterResolverIntf.getLeft()); ExpressionTuple right = selectDataMap(andExpression.getRight(), allDataMap, filterResolverIntf.getRight()); OrExpression orExpression = (OrExpression) expression; ExpressionTuple left = selectDataMap(orExpression.getLeft(), allDataMap, filterResolverIntf.getLeft()); ExpressionTuple right = selectDataMap(orExpression.getRight(), allDataMap, filterResolverIntf.getRight());
case OR: return new OrFilterExecuterImpl( createFilterExecuterTree(filterExpressionResolverTree.getLeft(), segmentProperties, complexDimensionInfoMap, minMaxCacheColumns), createFilterExecuterTree(filterExpressionResolverTree.getRight(), segmentProperties, case AND: return new AndFilterExecuterImpl( createFilterExecuterTree(filterExpressionResolverTree.getLeft(), segmentProperties, complexDimensionInfoMap, minMaxCacheColumns), createFilterExecuterTree(filterExpressionResolverTree.getRight(), segmentProperties,