public <T> RecordReader<T> getRecordReader(PageReadStore columns, RecordConverter<T> recordMaterializer) { return new RecordReaderImplementation<T>(this, recordMaterializer, validating, new MemColumnReadStore(columns)); }
/** * Override read() method to provide skip. */ @Override public T read() { skipToMatch(); if (recordsRead == recordCount) { return null; } ++ recordsRead; return super.read(); }
nextLevel[i][r] = parent.getFieldPath().length - 1; } else { // otherwise close until the next common parent nextLevel[i][r] = getCommonParentLevel( primitiveColumnIO.getFieldPath(), leaves[next].getFieldPath()); int caseDepth = Math.max(state.getDepth(d), caseStartLevel - 1); int caseNextLevel = Math.min(state.nextLevel[nextR], caseDepth + 1); Case currentCase = new Case(caseStartLevel, caseDepth, caseNextLevel, getNextReader(state.id, nextR), d == state.maxDefinitionLevel); Map<Case, Case> cases = currentCase.isDefined() ? definedCases : undefinedCases; if (!cases.containsKey(currentCase)) {
private void validateFSA(int[][] expectedFSA, MessageColumnIO columnIO, RecordReaderImplementation<?> recordReader) { log("FSA: ----"); List<PrimitiveColumnIO> leaves = columnIO.getLeaves(); for (int i = 0; i < leaves.size(); ++i) { PrimitiveColumnIO primitiveColumnIO = leaves.get(i); log(Arrays.toString(primitiveColumnIO.getFieldPath())); for (int r = 0; r < expectedFSA[i].length; r++) { int next = expectedFSA[i][r]; log(" "+r+" -> "+ (next==leaves.size() ? "end" : Arrays.toString(leaves.get(next).getFieldPath()))+": "+recordReader.getNextLevel(i, r)); assertEquals(Arrays.toString(primitiveColumnIO.getFieldPath())+": "+r+" -> ", next, recordReader.getNextReader(i, r)); } } log("----"); }
levelToClose[i][nextRepLevel] = parent.getFieldPath().length - 1; } else { // otherwise close until the next common parent levelToClose[i][nextRepLevel] = getCommonParentLevel( leafColumnIO.getFieldPath(), leaves[nextColIdx].getFieldPath()); int caseDepth = Math.max(state.getDepth(d), caseStartLevel - 1); int caseNextLevel = Math.min(state.nextLevel[nextR], caseDepth + 1); Case currentCase = new Case(caseStartLevel, caseDepth, caseNextLevel, getNextReader(state.id, nextR), d == state.maxDefinitionLevel); Map<Case, Case> cases = currentCase.isDefined() ? definedCases : undefinedCases; if (!cases.containsKey(currentCase)) {
@Override public RecordReader<T> visit(NoOpFilter noOpFilter) { return new RecordReaderImplementation<T>( MessageColumnIO.this, recordMaterializer, validating, new ColumnReadStoreImpl(columns, recordMaterializer.getRootConverter(), getType())); } });
@Override public RecordReader<T> visit(FilterPredicateCompat filterPredicateCompat) { FilterPredicate predicate = filterPredicateCompat.getFilterPredicate(); IncrementallyUpdatedFilterPredicateBuilder builder = new IncrementallyUpdatedFilterPredicateBuilder(); IncrementallyUpdatedFilterPredicate streamingPredicate = builder.build(predicate); RecordMaterializer<T> filteringRecordMaterializer = new FilteringRecordMaterializer<T>( recordMaterializer, leaves, builder.getValueInspectorsByColumn(), streamingPredicate); return new RecordReaderImplementation<T>( MessageColumnIO.this, filteringRecordMaterializer, validating, new ColumnReadStoreImpl(columns, filteringRecordMaterializer.getRootConverter(), getType())); }