Skip to content

Commit

Permalink
Optimize for loop in ForwardIndexHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
vvivekiyer committed Oct 15, 2022
1 parent 91a6dcf commit 26777bd
Showing 1 changed file with 30 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -298,79 +298,91 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader,
ForwardIndexReaderContext readerContext = reader.createContext();
boolean isSVColumn = reader.isSingleValue();

for (int i = 0; i < numDocs; i++) {
switch (reader.getStoredType()) {
// JSON fields are either stored as string or bytes. No special handling is needed because we make this
// decision based on the storedType of the reader.
switch (reader.getStoredType()) {
case INT: {
case INT: {
for (int i = 0; i < numDocs; i++) {
if (isSVColumn) {
int val = reader.getInt(i, readerContext);
creator.putInt(val);
} else {
int[] ints = reader.getIntMV(i, readerContext);
creator.putIntMV(ints);
}
break;
}
case LONG: {
break;
}
case LONG: {
for (int i = 0; i < numDocs; i++) {
if (isSVColumn) {
long val = reader.getLong(i, readerContext);
creator.putLong(val);
} else {
long[] longs = reader.getLongMV(i, readerContext);
creator.putLongMV(longs);
}
break;
}
case FLOAT: {
break;
}
case FLOAT: {
for (int i = 0; i < numDocs; i++) {
if (isSVColumn) {
float val = reader.getFloat(i, readerContext);
creator.putFloat(val);
} else {
float[] floats = reader.getFloatMV(i, readerContext);
creator.putFloatMV(floats);
}
break;
}
case DOUBLE: {
break;
}
case DOUBLE: {
for (int i = 0; i < numDocs; i++) {
if (isSVColumn) {
double val = reader.getDouble(i, readerContext);
creator.putDouble(val);
} else {
double[] doubles = reader.getDoubleMV(i, readerContext);
creator.putDoubleMV(doubles);
}
break;
}
case STRING: {
break;
}
case STRING: {
for (int i = 0; i < numDocs; i++) {
if (isSVColumn) {
String val = reader.getString(i, readerContext);
creator.putString(val);
} else {
String[] strings = reader.getStringMV(i, readerContext);
creator.putStringMV(strings);
}
break;
}
case BYTES: {
break;
}
case BYTES: {
for (int i = 0; i < numDocs; i++) {
if (isSVColumn) {
byte[] val = reader.getBytes(i, readerContext);
creator.putBytes(val);
} else {
byte[][] bytesArray = reader.getBytesMV(i, readerContext);
creator.putBytesMV(bytesArray);
}
break;
}
case BIG_DECIMAL: {
break;
}
case BIG_DECIMAL: {
for (int i = 0; i < numDocs; i++) {
Preconditions.checkState(isSVColumn, "BigDecimal is not supported for MV columns");
BigDecimal val = reader.getBigDecimal(i, readerContext);
creator.putBigDecimal(val);
break;
}
default:
throw new IllegalStateException();
break;
}
default:
throw new IllegalStateException();
}
}
}

0 comments on commit 26777bd

Please sign in to comment.