OneTimeMatchQueryPlanner.java 文件源码

java
阅读 17 收藏 0 点赞 0 评论 0

项目:graphflow 作者:
AbstractOperator constructFilter(Map<String, Integer>
    vertexVariableOrderIndexMapBeforeProjection, Map<String, Integer>
    edgeVariableOrderIndexMap, AbstractOperator nextOperator) {
    List<EdgeOrVertexPropertyDescriptor> edgeOrVertexPropertyDescriptors = new ArrayList<>();
    // The {@code descriptorIndexMap} holds the position of the descriptor for a given
    // variable in {@code edgeOrVertexPropertyDescriptors} list. A map is used to prevent
    // duplicate descriptors in the list.
    Map<String, Integer> descriptorIndexMap = new HashMap<>();
    for (QueryPredicate queryPredicate : structuredQuery.
        getEdgeLiteralAndNonLiteralPredicates()) {
        for (Pair<String, String> variable : queryPredicate.getAllVariables()) {
            if (null == descriptorIndexMap.get(variable.a + '.' + variable.b)) {
                descriptorIndexMap.put(variable.a + '.' + variable.b,
                    edgeOrVertexPropertyDescriptors.size());
                edgeOrVertexPropertyDescriptors.add(getEdgeOrVertexPropertyDescriptor(
                    vertexVariableOrderIndexMapBeforeProjection, edgeVariableOrderIndexMap,
                    variable.a, typeAndPropertyKeyStore.mapStringPropertyKeyToShort(
                        variable.b)));
            }
        }
    }
    Predicate<String []> predicate = PredicateFactory.getFilterPredicate(structuredQuery.
        getEdgeLiteralAndNonLiteralPredicates(), descriptorIndexMap);
    return new Filter(nextOperator, predicate, edgeOrVertexPropertyDescriptors,
        structuredQuery.getEdgeLiteralAndNonLiteralPredicates());
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号