|
@@ -774,7 +774,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
|
|
|
{
|
|
|
// bulk loading timestamp:
|
|
|
- var block = (TestBlock) timestampDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var block = (TestBlock) timestampDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -786,10 +786,10 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
{
|
|
|
// bulk loading counter field:
|
|
|
- var block = (TestBlock) counterDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var block = (TestBlock) counterDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
- var stringBlock = (TestBlock) stringCounterDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var stringBlock = (TestBlock) stringCounterDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(stringBlock);
|
|
|
assertEquals(size, stringBlock.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -806,7 +806,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
{
|
|
|
// bulk loading gauge field:
|
|
|
- var block = (TestBlock) gaugeDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var block = (TestBlock) gaugeDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -844,7 +844,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
|
|
|
{
|
|
|
// bulk loading timestamp:
|
|
|
- var block = (TestBlock) timestampDV.tryRead(blockFactory, docs, randomOffset, false, null);
|
|
|
+ var block = (TestBlock) timestampDV.tryRead(blockFactory, docs, randomOffset, false, null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -856,11 +856,11 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
{
|
|
|
// bulk loading counter field:
|
|
|
- var block = (TestBlock) counterDV.tryRead(factory, docs, randomOffset, false, null);
|
|
|
+ var block = (TestBlock) counterDV.tryRead(factory, docs, randomOffset, false, null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
|
|
|
- var stringBlock = (TestBlock) stringCounterDV.tryRead(factory, docs, randomOffset, false, null);
|
|
|
+ var stringBlock = (TestBlock) stringCounterDV.tryRead(factory, docs, randomOffset, false, null, false);
|
|
|
assertNotNull(stringBlock);
|
|
|
assertEquals(size, stringBlock.size());
|
|
|
|
|
@@ -878,7 +878,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
{
|
|
|
// bulk loading gauge field:
|
|
|
- var block = (TestBlock) gaugeDV.tryRead(factory, docs, randomOffset, false, null);
|
|
|
+ var block = (TestBlock) gaugeDV.tryRead(factory, docs, randomOffset, false, null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -903,11 +903,11 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
stringCounterDV = getBaseSortedDocValues(leafReader, counterFieldAsString);
|
|
|
{
|
|
|
// bulk loading counter field:
|
|
|
- var block = (TestBlock) counterDV.tryRead(factory, docs, 0, false, null);
|
|
|
+ var block = (TestBlock) counterDV.tryRead(factory, docs, 0, false, null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(size, block.size());
|
|
|
|
|
|
- var stringBlock = (TestBlock) stringCounterDV.tryRead(factory, docs, 0, false, null);
|
|
|
+ var stringBlock = (TestBlock) stringCounterDV.tryRead(factory, docs, 0, false, null, false);
|
|
|
assertNotNull(stringBlock);
|
|
|
assertEquals(size, stringBlock.size());
|
|
|
|
|
@@ -925,6 +925,91 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testOptionalColumnAtATimeReaderReadAsInt() throws Exception {
|
|
|
+ final String counterField = "counter";
|
|
|
+ final String timestampField = "@timestamp";
|
|
|
+ final String gaugeField = "gauge";
|
|
|
+ int currentTimestamp = 17040672;
|
|
|
+ int currentCounter = 10_000_000;
|
|
|
+
|
|
|
+ var config = getTimeSeriesIndexWriterConfig(null, timestampField);
|
|
|
+ try (var dir = newDirectory(); var iw = new IndexWriter(dir, config)) {
|
|
|
+ int[] gauge1Values = new int[] { 2, 4, 6, 8, 10, 12, 14, 16 };
|
|
|
+ int numDocs = 256 + random().nextInt(8096);
|
|
|
+
|
|
|
+ for (int i = 0; i < numDocs; i++) {
|
|
|
+ var d = new Document();
|
|
|
+ long timestamp = currentTimestamp;
|
|
|
+ // Index sorting doesn't work with NumericDocValuesField:
|
|
|
+ d.add(SortedNumericDocValuesField.indexedField(timestampField, timestamp));
|
|
|
+ d.add(new SortedNumericDocValuesField(counterField, currentCounter));
|
|
|
+ d.add(new SortedNumericDocValuesField(gaugeField, gauge1Values[i % gauge1Values.length]));
|
|
|
+
|
|
|
+ iw.addDocument(d);
|
|
|
+ if (i % 100 == 0) {
|
|
|
+ iw.commit();
|
|
|
+ }
|
|
|
+ if (i < numDocs - 1) {
|
|
|
+ currentTimestamp += 1000;
|
|
|
+ currentCounter++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ iw.commit();
|
|
|
+ var factory = TestBlock.factory();
|
|
|
+ try (var reader = DirectoryReader.open(iw)) {
|
|
|
+ int gaugeIndex = numDocs;
|
|
|
+ for (var leaf : reader.leaves()) {
|
|
|
+ var timestampDV = getBaseDenseNumericValues(leaf.reader(), timestampField);
|
|
|
+ var counterDV = getBaseDenseNumericValues(leaf.reader(), counterField);
|
|
|
+ var gaugeDV = getBaseDenseNumericValues(leaf.reader(), gaugeField);
|
|
|
+ int maxDoc = leaf.reader().maxDoc();
|
|
|
+ for (int i = 0; i < maxDoc;) {
|
|
|
+ int size = Math.max(1, random().nextInt(0, maxDoc - i));
|
|
|
+ var docs = TestBlock.docs(IntStream.range(i, i + size).toArray());
|
|
|
+
|
|
|
+ {
|
|
|
+ // bulk loading timestamp:
|
|
|
+ var block = (TestBlock) timestampDV.tryRead(factory, docs, 0, random().nextBoolean(), null, true);
|
|
|
+ assertNotNull(block);
|
|
|
+ assertEquals(size, block.size());
|
|
|
+ for (int j = 0; j < block.size(); j++) {
|
|
|
+ int actualTimestamp = (int) block.get(j);
|
|
|
+ int expectedTimestamp = currentTimestamp;
|
|
|
+ assertEquals(expectedTimestamp, actualTimestamp);
|
|
|
+ currentTimestamp -= 1000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ {
|
|
|
+ // bulk loading counter field:
|
|
|
+ var block = (TestBlock) counterDV.tryRead(factory, docs, 0, random().nextBoolean(), null, true);
|
|
|
+ assertNotNull(block);
|
|
|
+ assertEquals(size, block.size());
|
|
|
+ for (int j = 0; j < block.size(); j++) {
|
|
|
+ int expectedCounter = currentCounter;
|
|
|
+ int actualCounter = (int) block.get(j);
|
|
|
+ assertEquals(expectedCounter, actualCounter);
|
|
|
+ currentCounter--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ {
|
|
|
+ // bulk loading gauge field:
|
|
|
+ var block = (TestBlock) gaugeDV.tryRead(factory, docs, 0, random().nextBoolean(), null, true);
|
|
|
+ assertNotNull(block);
|
|
|
+ assertEquals(size, block.size());
|
|
|
+ for (int j = 0; j < block.size(); j++) {
|
|
|
+ int actualGauge = (int) block.get(j);
|
|
|
+ int expectedGauge = gauge1Values[--gaugeIndex % gauge1Values.length];
|
|
|
+ assertEquals(expectedGauge, actualGauge);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ i += size;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void testOptionalColumnAtATimeReaderWithSparseDocs() throws Exception {
|
|
|
final String counterField = "counter";
|
|
|
final String counterAsStringField = "counter_as_string";
|
|
@@ -1006,7 +1091,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
var docs = TestBlock.docs(docIds);
|
|
|
{
|
|
|
timestampDV = getBaseDenseNumericValues(leafReader, timestampField);
|
|
|
- var block = (TestBlock) timestampDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var block = (TestBlock) timestampDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(numDocsPerQValue, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -1017,7 +1102,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
{
|
|
|
counterDV = getBaseDenseNumericValues(leafReader, counterField);
|
|
|
- var block = (TestBlock) counterDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var block = (TestBlock) counterDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(numDocsPerQValue, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -1028,7 +1113,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
{
|
|
|
counterAsStringDV = getBaseSortedDocValues(leafReader, counterAsStringField);
|
|
|
- var block = (TestBlock) counterAsStringDV.tryRead(factory, docs, 0, random().nextBoolean(), null);
|
|
|
+ var block = (TestBlock) counterAsStringDV.tryRead(factory, docs, 0, random().nextBoolean(), null, false);
|
|
|
assertNotNull(block);
|
|
|
assertEquals(numDocsPerQValue, block.size());
|
|
|
for (int j = 0; j < block.size(); j++) {
|
|
@@ -1051,8 +1136,8 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
assertThat(dv, instanceOf(OptionalColumnAtATimeReader.class));
|
|
|
OptionalColumnAtATimeReader directReader = (OptionalColumnAtATimeReader) dv;
|
|
|
docs = TestBlock.docs(testDocs.stream().mapToInt(n -> n).toArray());
|
|
|
- assertNull(directReader.tryRead(factory, docs, 0, false, null));
|
|
|
- TestBlock block = (TestBlock) directReader.tryRead(factory, docs, 0, true, null);
|
|
|
+ assertNull(directReader.tryRead(factory, docs, 0, false, null, false));
|
|
|
+ TestBlock block = (TestBlock) directReader.tryRead(factory, docs, 0, true, null, false);
|
|
|
assertNotNull(block);
|
|
|
for (int i = 0; i < testDocs.size(); i++) {
|
|
|
assertThat(block.get(i), equalTo(temperatureValues[testDocs.get(i)]));
|
|
@@ -1064,8 +1149,8 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
docs = TestBlock.docs(testDocs.stream().mapToInt(n -> n).toArray());
|
|
|
NumericDocValues dv = leafReader.getNumericDocValues(temperatureField);
|
|
|
OptionalColumnAtATimeReader directReader = (OptionalColumnAtATimeReader) dv;
|
|
|
- assertNull(directReader.tryRead(factory, docs, 0, false, null));
|
|
|
- assertNull(directReader.tryRead(factory, docs, 0, true, null));
|
|
|
+ assertNull(directReader.tryRead(factory, docs, 0, false, null, false));
|
|
|
+ assertNull(directReader.tryRead(factory, docs, 0, true, null, false));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1122,7 +1207,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
}
|
|
|
};
|
|
|
var idReader = ESTestCase.asInstanceOf(OptionalColumnAtATimeReader.class, leaf.reader().getNumericDocValues("id"));
|
|
|
- TestBlock idBlock = (TestBlock) idReader.tryRead(factory, docs, 0, false, null);
|
|
|
+ TestBlock idBlock = (TestBlock) idReader.tryRead(factory, docs, 0, false, null, false);
|
|
|
assertNotNull(idBlock);
|
|
|
|
|
|
{
|
|
@@ -1136,7 +1221,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
block = (TestBlock) reader2.tryReadAHead(factory, docs, randomOffset);
|
|
|
} else {
|
|
|
assertNull(reader2.tryReadAHead(factory, docs, randomOffset));
|
|
|
- block = (TestBlock) reader2.tryRead(factory, docs, randomOffset, false, null);
|
|
|
+ block = (TestBlock) reader2.tryRead(factory, docs, randomOffset, false, null, false);
|
|
|
}
|
|
|
assertNotNull(block);
|
|
|
assertThat(block.size(), equalTo(docs.count() - randomOffset));
|
|
@@ -1158,7 +1243,7 @@ public class ES819TSDBDocValuesFormatTests extends ES87TSDBDocValuesFormatTests
|
|
|
block = (TestBlock) reader3.tryReadAHead(factory, docs, randomOffset);
|
|
|
} else {
|
|
|
assertNull(reader3.tryReadAHead(factory, docs, randomOffset));
|
|
|
- block = (TestBlock) reader3.tryRead(factory, docs, randomOffset, false, null);
|
|
|
+ block = (TestBlock) reader3.tryRead(factory, docs, randomOffset, false, null, false);
|
|
|
}
|
|
|
assertNotNull(reader3);
|
|
|
assertNotNull(block);
|