Jackie-Jiang commented on code in PR #11669:
URL: https://github.com/apache/pinot/pull/11669#discussion_r1336331983
##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/columnminmaxvalue/ColumnMinMaxValueGenerator.java:
##########
@@ -188,194 +187,162 @@ private void addColumnMinMaxValueForColumn(String
columnName)
} else {
// setting min/max for non-dictionary columns.
int numDocs = columnMetadata.getTotalDocs();
- boolean isSingleValueField =
_segmentMetadata.getSchema().getFieldSpecFor(columnName).isSingleValueField();
- PinotDataBuffer forwardBuffer = _segmentWriter.getIndexFor(columnName,
StandardIndexes.forward());
- switch (dataType) {
- case INT: {
- int min = Integer.MAX_VALUE;
- int max = Integer.MIN_VALUE;
- if (isSingleValueField) {
- try (FixedByteChunkSVForwardIndexReader rawIndexReader = new
FixedByteChunkSVForwardIndexReader(
- forwardBuffer, DataType.INT); ChunkReaderContext readerContext
= rawIndexReader.createContext()) {
- for (int docId = 0; docId < numDocs; docId++) {
- int value = rawIndexReader.getInt(docId, readerContext);
+ PinotDataBuffer rawIndexBuffer = _segmentWriter.getIndexFor(columnName,
StandardIndexes.forward());
+ boolean isSingleValue =
_segmentMetadata.getSchema().getFieldSpecFor(columnName).isSingleValueField();
+ try (
+ ForwardIndexReader rawIndexReader =
ForwardIndexReaderFactory.createRawIndexReader(rawIndexBuffer, storedType,
+ isSingleValue); ForwardIndexReaderContext readerContext =
rawIndexReader.createContext()) {
+ switch (storedType) {
+ case INT: {
+ int min = Integer.MAX_VALUE;
+ int max = Integer.MIN_VALUE;
+ if (isSingleValue) {
+ for (int docId = 0; docId < numDocs; docId++) {
+ int value = rawIndexReader.getInt(docId, readerContext);
+ min = Math.min(min, value);
+ max = Math.max(max, value);
+ }
+ } else {
+ for (int docId = 0; docId < numDocs; docId++) {
+ int[] values = rawIndexReader.getIntMV(docId, readerContext);
+ for (int value : values) {
min = Math.min(min, value);
max = Math.max(max, value);
}
+ }
}
- } else {
- try (FixedByteChunkMVForwardIndexReader rawIndexReader = new
FixedByteChunkMVForwardIndexReader(
- forwardBuffer, DataType.INT); ChunkReaderContext readerContext
= rawIndexReader.createContext()) {
- for (int docId = 0; docId < numDocs; docId++) {
- int[] value = rawIndexReader.getIntMV(docId, readerContext);
- for (int i = 0; i < value.length; i++) {
- min = Math.min(min, value[i]);
- max = Math.max(max, value[i]);
- }
- }
- }
+
SegmentColumnarIndexCreator.addColumnMinMaxValueInfo(_segmentProperties,
columnName, String.valueOf(min),
Review Comment:
This cannot be moved because `min` and `max` has different type for
different data type
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]