aboutsummaryrefslogtreecommitdiffstats
path: root/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java
diff options
context:
space:
mode:
Diffstat (limited to 'predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java')
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java
new file mode 100644
index 00000000000..0dcd6533b34
--- /dev/null
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java
@@ -0,0 +1,73 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.predicate.index;
+
+import com.yahoo.search.predicate.SubqueryBitmap;
+
+/**
+ * Wraps an int stream of document ids into a PostingList.
+ * All documents in the stream are considered matches.
+ * @author <a href="mailto:magnarn@yahoo-inc.com">Magnar Nedland</a>
+ * @author bjorncs
+ */
+public class ZeroConstraintPostingList implements PostingList {
+ private final int[] docIds;
+ private final int length;
+ private int currentIndex;
+ private int currentDocId;
+
+ public ZeroConstraintPostingList(int[] docIds) {
+ this.docIds = docIds;
+ this.currentIndex = 0;
+ this.currentDocId = -1;
+ this.length = docIds.length;
+ }
+
+ @Override
+ public boolean nextDocument(int docId) {
+ int currentDocId = this.currentDocId;
+ while (currentIndex < length && currentDocId <= docId) {
+ currentDocId = docIds[currentIndex++];
+ }
+ if (currentDocId <= docId) {
+ return false;
+ }
+ this.currentDocId = currentDocId;
+ return true;
+ }
+
+ @Override
+ public boolean prepareIntervals() {
+ return true;
+ }
+
+ @Override
+ public boolean nextInterval() {
+ return false;
+ }
+
+ @Override
+ public int size() {
+ return length;
+ }
+
+ @Override
+ public int getInterval() {
+ return Interval.fromBoundaries(1, Interval.ZERO_CONSTRAINT_RANGE);
+ }
+
+ @Override
+ public int getDocId() {
+ return currentDocId;
+ }
+
+ @Override
+ public long getSubquery() {
+ return SubqueryBitmap.ALL_SUBQUERIES;
+ }
+
+ @Override
+ public int[] getDocIds() {
+ return docIds;
+ }
+
+}