From a565f26d1a8ab186a52f5b3baf429cac814dca32 Mon Sep 17 00:00:00 2001 From: liningrui Date: Fri, 22 Mar 2019 17:48:25 +0800 Subject: [PATCH] Modified on IdHolder and related classes Change-Id: If9709dd1fb8e584630c48db01edd2ce99b65636b --- .../baidu/hugegraph/backend/page/IdHolder.java | 15 ++++++++------- .../hugegraph/backend/page/IdHolderList.java | 2 +- .../hugegraph/backend/page/PageEntryIterator.java | 2 +- .../backend/tx/GraphIndexTransaction.java | 6 +++--- .../com/baidu/hugegraph/core/VertexCoreTest.java | 2 +- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolder.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolder.java index faa2ace809..5f1c095940 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolder.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolder.java @@ -20,16 +20,16 @@ package com.baidu.hugegraph.backend.page; import java.util.Set; -import java.util.function.Supplier; +import java.util.function.Function; import com.baidu.hugegraph.backend.id.Id; -import com.baidu.hugegraph.backend.query.Query; +import com.baidu.hugegraph.backend.query.ConditionQuery; import com.baidu.hugegraph.util.E; public final class IdHolder { - private final Query query; - private final Supplier idsFetcher; + private final ConditionQuery query; + private final Function idsFetcher; private boolean exhausted; private Set ids; @@ -47,11 +47,12 @@ public IdHolder(Set ids) { /** * For paged situation */ - public IdHolder(Query query, Supplier idsFetcher) { + public IdHolder(ConditionQuery query, + Function idsFetcher) { E.checkArgument(query.paging(), "Query '%s' must carry the page info in paged mode", query); - this.query = query; + this.query = query.copy(); this.idsFetcher = idsFetcher; this.exhausted = false; this.ids = null; @@ -85,7 +86,7 @@ public PageIds fetchNext(String page, long pageSize) { this.query.page(page); this.query.limit(pageSize); - PageIds result = this.idsFetcher.get(); + PageIds result = this.idsFetcher.apply(this.query); assert result != null; this.ids = result.ids(); diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolderList.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolderList.java index 5ebba5ab86..c01455b25f 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolderList.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/IdHolderList.java @@ -40,7 +40,7 @@ public boolean paging() { public boolean add(IdHolder holder) { E.checkArgument(this.paging == holder.paging(), "The IdHolder to be linked must be " + - "IdHolder in paging mode"); + "IdHolder in same paging mode"); if (this.paging || this.isEmpty()) { super.add(holder); } else { diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/PageEntryIterator.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/PageEntryIterator.java index 4c3aa1a5bd..f02828299c 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/PageEntryIterator.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/page/PageEntryIterator.java @@ -86,7 +86,7 @@ private boolean fetch() { @Override public BackendEntry next() { - if (!this.results.iterator().hasNext() && !this.hasNext()) { + if (!this.hasNext()) { throw new NoSuchElementException(); } BackendEntry entry = this.results.iterator().next(); diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java index a2ddfe1151..f233bd663c 100644 --- a/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java +++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/backend/tx/GraphIndexTransaction.java @@ -480,16 +480,16 @@ private IdHolder doIndexQuery(IndexLabel indexLabel, @Watched(prefix = "index") private IdHolder doIndexQueryInPage(IndexLabel indexLabel, ConditionQuery query) { - return new IdHolder(query, () -> { + return new IdHolder(query, (q) -> { LockUtil.Locks locks = new LockUtil.Locks(this.graph().name()); try { locks.lockReads(LockUtil.INDEX_LABEL_DELETE, indexLabel.id()); locks.lockReads(LockUtil.INDEX_LABEL_REBUILD, indexLabel.id()); Set ids = InsertionOrderUtil.newSet(); - Iterator entries = super.query(query); + Iterator entries = super.query(q); while (entries.hasNext()) { - HugeIndex index = this.serializer.readIndex(graph(), query, + HugeIndex index = this.serializer.readIndex(graph(), q, entries.next()); ids.addAll(index.elementIds()); } diff --git a/hugegraph-test/src/main/java/com/baidu/hugegraph/core/VertexCoreTest.java b/hugegraph-test/src/main/java/com/baidu/hugegraph/core/VertexCoreTest.java index d1054dc866..f25a6a7a14 100644 --- a/hugegraph-test/src/main/java/com/baidu/hugegraph/core/VertexCoreTest.java +++ b/hugegraph-test/src/main/java/com/baidu/hugegraph/core/VertexCoreTest.java @@ -3458,7 +3458,7 @@ public void testQueryBySingleLabelInPage() { @Test public void testQueryByMultiLabelInPage() { Assume.assumeTrue("Not support paging", - storeFeatures().supportsQueryByPage()); + storeFeatures().supportsQueryByPage()); HugeGraph graph = graph(); GraphTraversalSource g = graph.traversal();