private Query relations(RelationCategory returnType) { // if (name==null) { // if (hasSingleType()) name = getSingleType().name(); // else if (!requiresName) name = QUERY_NAME_PREFIX + queries.size(); // else throw new IllegalStateException("Need to specify an explicit name for this query"); // } BaseVertexCentricQuery vq = super.constructQuery(returnType); List<SliceQuery> slices = new ArrayList<>(vq.numSubQueries()); for (int i = 0; i < vq.numSubQueries(); i++) { BackendQueryHolder<SliceQuery> bq = vq.getSubQuery(i); SliceQuery sq = bq.getBackendQuery(); slices.add(sq.updateLimit(bq.isFitted() ? vq.getLimit() : hardQueryLimit)); } Query q = new Query(slices, returnType); synchronized (queries) { Preconditions.checkArgument(!queries.contains(q), "Query has already been added: %s", q); queries.add(q); for (SliceQuery sq : slices) { inverseQueries.put(sq, q); } } return q; }
private Iterable<TitanRelation> executeIndividualRelations(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query,vertex)) return new SimpleVertexQueryProcessor(query,tx).relations(); else return new QueryProcessor<VertexCentricQuery,TitanRelation,SliceQuery>(query, tx.edgeProcessor); }
private VertexList executeIndividualVertexIds(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query, vertex)) return new SimpleVertexQueryProcessor(query,tx).vertexIds(); return edges2VertexIds((Iterable) executeIndividualRelations(vertex,baseQuery), vertex); }
Preconditions.checkArgument(!vertices.isEmpty(), "Need to add at least one vertex to query"); Map<TitanVertex, Q> result = new HashMap<TitanVertex, Q>(vertices.size()); BaseVertexCentricQuery bq = super.constructQuery(returnType); profiler.setAnnotation(QueryProfiler.MULTIQUERY_ANNOTATION,true); profiler.setAnnotation(QueryProfiler.NUMVERTICES_ANNOTATION,vertices.size());
private Iterable<TitanVertex> executeIndividualVertices(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query, vertex)) return new SimpleVertexQueryProcessor(query,tx).vertexIds(); else return edges2Vertices((Iterable) executeIndividualRelations(vertex,baseQuery), query.getVertex()); }
protected<Q> Q execute(RelationCategory returnType, ResultConstructor<Q> resultConstructor) { BaseVertexCentricQuery bq = super.constructQuery(returnType); if (bq.isEmpty()) return resultConstructor.emptyResult(); if (returnType==RelationCategory.PROPERTY && hasSingleType() && !hasQueryOnlyLoaded() && tx.getConfiguration().hasPropertyPrefetching()) { //Preload properties vertex.query().properties().iterator().hasNext(); } if (isPartitionedVertex(vertex) && !hasQueryOnlyGivenVertex()) { //If it's a preloaded vertex we shouldn't preload data explicitly List<InternalVertex> vertices = allRequiredRepresentatives(vertex); profiler.setAnnotation(QueryProfiler.PARTITIONED_VERTEX_ANNOTATION,true); profiler.setAnnotation(QueryProfiler.NUMVERTICES_ANNOTATION,vertices.size()); if (vertices.size()>1) { for (BackendQueryHolder<SliceQuery> sq : bq.getQueries()) { tx.executeMultiQuery(vertices, sq.getBackendQuery(),sq.getProfiler()); } } } else profiler.setAnnotation(QueryProfiler.NUMVERTICES_ANNOTATION,1); return resultConstructor.getResult(vertex,bq); }
protected QueryDescription describe(int numVertices, RelationCategory returnType) { return new StandardQueryDescription(numVertices,constructQuery(returnType)); }
private Iterable<TitanRelation> executeIndividualRelations(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query,vertex)) return new SimpleVertexQueryProcessor(query,tx).relations(); else return new QueryProcessor<VertexCentricQuery,TitanRelation,SliceQuery>(query, tx.edgeProcessor); }
Preconditions.checkArgument(!vertices.isEmpty(), "Need to add at least one vertex to query"); Map<TitanVertex, Q> result = new HashMap<TitanVertex, Q>(vertices.size()); BaseVertexCentricQuery bq = super.constructQuery(returnType); if (!bq.isEmpty()) { for (BackendQueryHolder<SliceQuery> sq : bq.getQueries()) {
private Iterable<TitanRelation> executeIndividualRelations(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query,vertex)) return new SimpleVertexQueryProcessor(query,tx).relations(); else return new QueryProcessor<VertexCentricQuery,TitanRelation,SliceQuery>(query, tx.edgeProcessor); }
private Query relations(RelationCategory returnType) { // if (name==null) { // if (hasSingleType()) name = getSingleType().name(); // else if (!requiresName) name = QUERY_NAME_PREFIX + queries.size(); // else throw new IllegalStateException("Need to specify an explicit name for this query"); // } BaseVertexCentricQuery vq = super.constructQuery(returnType); List<SliceQuery> slices = new ArrayList<>(vq.numSubQueries()); for (int i = 0; i < vq.numSubQueries(); i++) { BackendQueryHolder<SliceQuery> bq = vq.getSubQuery(i); SliceQuery sq = bq.getBackendQuery(); slices.add(sq.updateLimit(bq.isFitted() ? vq.getLimit() : hardQueryLimit)); } Query q = new Query(slices, returnType); synchronized (queries) { Preconditions.checkArgument(!queries.contains(q), "Query has already been added: %s", q); queries.add(q); for (SliceQuery sq : slices) { inverseQueries.put(sq, q); } } return q; }
private VertexList executeIndividualVertexIds(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query, vertex)) return new SimpleVertexQueryProcessor(query,tx).vertexIds(); return edges2VertexIds((Iterable) executeIndividualRelations(vertex,baseQuery), vertex); }
private VertexList executeIndividualVertexIds(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query, vertex)) return new SimpleVertexQueryProcessor(query,tx).vertexIds(); return edges2VertexIds((Iterable) executeIndividualRelations(vertex,baseQuery), vertex); }
Preconditions.checkArgument(!vertices.isEmpty(), "Need to add at least one vertex to query"); Map<TitanVertex, Q> result = new HashMap<TitanVertex, Q>(vertices.size()); BaseVertexCentricQuery bq = super.constructQuery(returnType); profiler.setAnnotation(QueryProfiler.MULTIQUERY_ANNOTATION,true); profiler.setAnnotation(QueryProfiler.NUMVERTICES_ANNOTATION,vertices.size());
private Iterable<TitanVertex> executeIndividualVertices(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query, vertex)) return new SimpleVertexQueryProcessor(query,tx).vertexIds(); else return edges2Vertices((Iterable) executeIndividualRelations(vertex,baseQuery), query.getVertex()); }
protected<Q> Q execute(RelationCategory returnType, ResultConstructor<Q> resultConstructor) { BaseVertexCentricQuery bq = super.constructQuery(returnType); if (bq.isEmpty()) return resultConstructor.emptyResult(); if (isPartitionedVertex(vertex)) { List<InternalVertex> vertices = allRepresentatives(vertex); if (vertices.size()>1) { for (BackendQueryHolder<SliceQuery> sq : bq.getQueries()) { tx.executeMultiQuery(vertices, sq.getBackendQuery()); } } } return resultConstructor.getResult(vertex,bq); }
private Iterable<TitanVertex> executeIndividualVertices(InternalVertex vertex, BaseVertexCentricQuery baseQuery) { VertexCentricQuery query = constructQuery(vertex, baseQuery); if (useSimpleQueryProcessor(query, vertex)) return new SimpleVertexQueryProcessor(query,tx).vertexIds(); else return edges2Vertices((Iterable) executeIndividualRelations(vertex,baseQuery), query.getVertex()); }
protected<Q> Q execute(RelationCategory returnType, ResultConstructor<Q> resultConstructor) { BaseVertexCentricQuery bq = super.constructQuery(returnType); if (bq.isEmpty()) return resultConstructor.emptyResult(); if (returnType==RelationCategory.PROPERTY && hasSingleType() && !hasQueryOnlyLoaded() && tx.getConfiguration().hasPropertyPrefetching()) { //Preload properties vertex.query().properties().iterator().hasNext(); } if (isPartitionedVertex(vertex) && !hasQueryOnlyGivenVertex()) { //If it's a preloaded vertex we shouldn't preload data explicitly List<InternalVertex> vertices = allRequiredRepresentatives(vertex); profiler.setAnnotation(QueryProfiler.PARTITIONED_VERTEX_ANNOTATION,true); profiler.setAnnotation(QueryProfiler.NUMVERTICES_ANNOTATION,vertices.size()); if (vertices.size()>1) { for (BackendQueryHolder<SliceQuery> sq : bq.getQueries()) { tx.executeMultiQuery(vertices, sq.getBackendQuery(),sq.getProfiler()); } } } else profiler.setAnnotation(QueryProfiler.NUMVERTICES_ANNOTATION,1); return resultConstructor.getResult(vertex,bq); }