private void writeNullForMissingFields(final int to) { final int from = currentIndex[currentLevel]; for (; currentIndex[currentLevel] <= to; ++currentIndex[currentLevel]) { try { ColumnIO undefinedField = ((GroupColumnIO) currentColumnIO).getChild(currentIndex[currentLevel]); int d = currentColumnIO.getDefinitionLevel(); if (DEBUG) log( Arrays.toString(undefinedField.getFieldPath()) + ".writeNull(" + r[currentLevel] + "," + d + ")"); undefinedField.writeNull(r[currentLevel], d); } catch (RuntimeException e) { throw new RuntimeException( "error while writing nulls from " + from + " to " + to + ". current index: " + currentIndex[currentLevel], e); } } }
public void printState() { log( currentLevel + ", " + currentIndex[currentLevel] + ": " + Arrays.toString(currentColumnIO.getFieldPath()) + " r:" + r[currentLevel]); if (r[currentLevel] > currentColumnIO.getRepetitionLevel()) { // sanity check throw new RuntimeException( r[currentLevel] + "(r) > " + currentColumnIO.getRepetitionLevel() + " ( schema r)"); } }
@Override public void addDouble(double value) { if (DEBUG) log("addDouble(" + value + ")"); ((PrimitiveColumnIO) currentColumnIO) .getColumnWriter() .write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void endField(String field, int index) { if (DEBUG) log("endField(" + field + ", " + index + ")"); currentColumnIO = currentColumnIO.getParent(); currentIndex[currentLevel] = index + 1; r[currentLevel] = currentLevel == 0 ? 0 : r[currentLevel - 1]; if (DEBUG) printState(); }
private void setRepetitionLevel() { r[currentLevel] = currentColumnIO.getRepetitionLevel(); if (DEBUG) log("r: " + r[currentLevel]); }