/** * Skips forwards until the filter finds the first match. Returns false * if none found. */ private void skipToMatch() { while (recordsRead < recordCount && !recordFilter.isMatch()) { State currentState = getState(0); do { ColumnReader columnReader = currentState.column; // currentLevel = depth + 1 at this point // set the current value if (columnReader.getCurrentDefinitionLevel() >= currentState.maxDefinitionLevel) { columnReader.skip(); } columnReader.consume(); // Based on repetition level work out next state to go to int nextR = currentState.maxRepetitionLevel == 0 ? 0 : columnReader.getCurrentRepetitionLevel(); currentState = currentState.getNextState(nextR); } while (currentState != null); ++ recordsRead; } } }
/** * Skips forwards until the filter finds the first match. Returns false * if none found. */ private void skipToMatch() { while (recordsRead < recordCount && !recordFilter.isMatch()) { State currentState = getState(0); do { ColumnReader columnReader = currentState.column; // currentLevel = depth + 1 at this point // set the current value if (columnReader.getCurrentDefinitionLevel() >= currentState.maxDefinitionLevel) { columnReader.skip(); } columnReader.consume(); // Based on repetition level work out next state to go to int nextR = currentState.maxRepetitionLevel == 0 ? 0 : columnReader.getCurrentRepetitionLevel(); currentState = currentState.getNextState(nextR); } while (currentState != null); ++ recordsRead; } } }