|
@@ -123,10 +123,10 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.LongBuilder builder = factory.longsFromDocValues(docs.count())) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.LongBuilder builder = factory.longsFromDocValues(docs.count() - offset)) {
|
|
|
int lastDoc = -1;
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < lastDoc) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -172,9 +172,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.LongBuilder builder = factory.longsFromDocValues(docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.LongBuilder builder = factory.longsFromDocValues(docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < this.docID) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -258,10 +258,10 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.IntBuilder builder = factory.intsFromDocValues(docs.count())) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.IntBuilder builder = factory.intsFromDocValues(docs.count() - offset)) {
|
|
|
int lastDoc = -1;
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < lastDoc) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -307,9 +307,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.IntBuilder builder = factory.intsFromDocValues(docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.IntBuilder builder = factory.intsFromDocValues(docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < this.docID) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -407,10 +407,10 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.DoubleBuilder builder = factory.doublesFromDocValues(docs.count())) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.DoubleBuilder builder = factory.doublesFromDocValues(docs.count() - offset)) {
|
|
|
int lastDoc = -1;
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < lastDoc) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -460,9 +460,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.DoubleBuilder builder = factory.doublesFromDocValues(docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.DoubleBuilder builder = factory.doublesFromDocValues(docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < this.docID) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -541,10 +541,10 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
// Doubles from doc values ensures that the values are in order
|
|
|
- try (BlockLoader.FloatBuilder builder = factory.denseVectors(docs.count(), dimensions)) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ try (BlockLoader.FloatBuilder builder = factory.denseVectors(docs.count() - offset, dimensions)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < floatVectorValues.docID()) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -642,19 +642,19 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
if (ordinals.advanceExact(docId)) {
|
|
|
BytesRef v = ordinals.lookupOrd(ordinals.ordValue());
|
|
|
// the returned BytesRef can be reused
|
|
|
- return factory.constantBytes(BytesRef.deepCopyOf(v));
|
|
|
+ return factory.constantBytes(BytesRef.deepCopyOf(v), 1);
|
|
|
} else {
|
|
|
- return factory.constantNulls();
|
|
|
+ return factory.constantNulls(1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- if (docs.count() == 1) {
|
|
|
- return readSingleDoc(factory, docs.get(0));
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ if (docs.count() - offset == 1) {
|
|
|
+ return readSingleDoc(factory, docs.get(offset));
|
|
|
}
|
|
|
- try (BlockLoader.SingletonOrdinalsBuilder builder = factory.singletonOrdinalsBuilder(ordinals, docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ try (var builder = factory.singletonOrdinalsBuilder(ordinals, docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < ordinals.docID()) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -697,9 +697,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BytesRefBuilder builder = factory.bytesRefsFromDocValues(docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BytesRefBuilder builder = factory.bytesRefsFromDocValues(docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < ordinals.docID()) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -777,9 +777,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.BytesRefBuilder builder = factory.bytesRefs(docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.BytesRefBuilder builder = factory.bytesRefs(docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < docID) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -876,9 +876,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.FloatBuilder builder = factory.denseVectors(docs.count(), dimensions)) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.FloatBuilder builder = factory.denseVectors(docs.count() - offset, dimensions)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < docID) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -960,10 +960,10 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.BooleanBuilder builder = factory.booleansFromDocValues(docs.count())) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.BooleanBuilder builder = factory.booleansFromDocValues(docs.count() - offset)) {
|
|
|
int lastDoc = -1;
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < lastDoc) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|
|
@@ -1009,9 +1009,9 @@ public abstract class BlockDocValuesReader implements BlockLoader.AllReader {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public BlockLoader.Block read(BlockFactory factory, Docs docs) throws IOException {
|
|
|
- try (BlockLoader.BooleanBuilder builder = factory.booleansFromDocValues(docs.count())) {
|
|
|
- for (int i = 0; i < docs.count(); i++) {
|
|
|
+ public BlockLoader.Block read(BlockFactory factory, Docs docs, int offset) throws IOException {
|
|
|
+ try (BlockLoader.BooleanBuilder builder = factory.booleansFromDocValues(docs.count() - offset)) {
|
|
|
+ for (int i = offset; i < docs.count(); i++) {
|
|
|
int doc = docs.get(i);
|
|
|
if (doc < this.docID) {
|
|
|
throw new IllegalStateException("docs within same block must be in order");
|