@@ -124,6 +124,29 @@ public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOExcepti
124124 writeField (field , producer , -1 , null );
125125 }
126126
127+ private static boolean assertNumDocsWithValueAndNumValues (
128+ long numValuesFromStats ,
129+ int numDocsWithValueFromStats ,
130+ FieldInfo field ,
131+ TsdbDocValuesProducer valuesProducer
132+ ) throws IOException {
133+ long actualNumValues = 0 ;
134+ int actualNumDocsWithValue = 0 ;
135+ var values = valuesProducer .getSortedNumeric (field );
136+ for (int doc = values .nextDoc (); doc != DocIdSetIterator .NO_MORE_DOCS ; doc = values .nextDoc ()) {
137+ actualNumDocsWithValue ++;
138+ final int count = values .docValueCount ();
139+ actualNumValues += count ;
140+ }
141+
142+ assert actualNumDocsWithValue == numDocsWithValueFromStats
143+ : "expected[" + numDocsWithValueFromStats + ", but got [" + actualNumDocsWithValue + "]" ;
144+ assert actualNumValues == numValuesFromStats
145+ : "expected[" + numValuesFromStats + ", but got [" + actualNumValues + "]" ;
146+
147+ return true ;
148+ }
149+
127150 private long [] writeField (FieldInfo field , TsdbDocValuesProducer valuesProducer , long maxOrd , OffsetsAccumulator offsetsAccumulator )
128151 throws IOException {
129152 int numDocsWithValue = 0 ;
@@ -133,6 +156,7 @@ private long[] writeField(FieldInfo field, TsdbDocValuesProducer valuesProducer,
133156 if (valuesProducer .mergeStats .supported ()) {
134157 numDocsWithValue = valuesProducer .mergeStats .sumNumDocsWithField ();
135158 numValues = valuesProducer .mergeStats .sumNumValues ();
159+ assert assertNumDocsWithValueAndNumValues (numValues , numDocsWithValue , field , valuesProducer );
136160 } else {
137161 values = valuesProducer .getSortedNumeric (field );
138162 for (int doc = values .nextDoc (); doc != DocIdSetIterator .NO_MORE_DOCS ; doc = values .nextDoc ()) {
0 commit comments