private void repositionInStreams(TreeReaderFactory.TreeReader[] columnReaders, EncodedColumnBatch<OrcBatchKey> batch, boolean sameStripe, ConsumerStripeMetadata stripeMetadata) throws IOException { PositionProvider[] pps = createPositionProviders( columnReaders, batch.getBatchKey(), stripeMetadata); if (LlapIoImpl.ORC_LOGGER.isTraceEnabled()) { LlapIoImpl.ORC_LOGGER.trace("Created pps {}", Arrays.toString(pps)); } if (pps == null) return; for (int i = 0; i < columnReaders.length; i++) { TreeReader reader = columnReaders[i]; if (reader == null) continue; // Note: we assume this never happens for SerDe reader - the batch would never have vectors. // That is always true now; but it wasn't some day, the below would throw in getColumnData. ((SettableTreeReader) reader).setBuffers(batch, sameStripe); // TODO: When hive moves to java8, make updateTimezone() as default method in // SettableTreeReader so that we can avoid this check. if (reader instanceof EncodedTreeReaderFactory.TimestampStreamReader && !sameStripe) { ((EncodedTreeReaderFactory.TimestampStreamReader) reader) .updateTimezone(stripeMetadata.getWriterTimezone()); } reader.seek(pps); } }
@Override public void seek(PositionProvider index) throws IOException { super.seek(index); data.seek(index); nanos.seek(index); }
@Override public void seek(PositionProvider index) throws IOException { super.seek(index); reader.seek(index); }
private void seekToRowEntry(TreeReaderFactory.TreeReader reader, int rowEntry) throws IOException { PositionProvider[] index = new PositionProvider[indexes.length]; for (int i = 0; i < indexes.length; ++i) { if (indexes[i] != null) { index[i] = new PositionProviderImpl(indexes[i].getEntry(rowEntry)); } } reader.seek(index); }
@Override public void seek(PositionProvider index) throws IOException { super.seek(index); reader.seek(index); }
@Override public void seek(PositionProvider index) throws IOException { super.seek(index); stream.seek(index); lengths.seek(index); }
private void positionInStreams(TreeReaderFactory.TreeReader[] columnReaders, OrcBatchKey batchKey, ConsumerStripeMetadata stripeMetadata) throws IOException { PositionProvider[] pps = createPositionProviders(columnReaders, batchKey, stripeMetadata); if (pps == null) return; for (int i = 0; i < columnReaders.length; i++) { if (columnReaders[i] == null) continue; // TODO: we could/should trace seek destinations; pps needs a "peek" method columnReaders[i].seek(pps); } }
@Override public void seek(PositionProvider index) throws IOException { super.seek(index); reader.seek(index); }
@Override public void seek(PositionProvider index) throws IOException { super.seek(index); stream.seek(index); // don't seek data stream lengths.seek(index); }
@Override public void seek(PositionProvider[] index) throws IOException { // We are not calling super.seek since we handle the present stream differently. PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } // lengths stream could be empty stream or already reached end of stream before present stream. // This can happen if all values in stream are nulls or last row group values are all null. if (_lengthStream.available() > 0) { if (_isFileCompressed) { ownIndex.getNext(); } lengths.seek(ownIndex); keyReader.seek(index); valueReader.seek(index); } }
@Override public void seek(PositionProvider[] index) throws IOException { PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } // lengths stream could be empty stream or already reached end of stream before present stream. // This can happen if all values in stream are nulls or last row group values are all null. if (_dataStream.available() > 0) { if (_isFileCompressed) { ownIndex.getNext(); } tags.seek(ownIndex); if (fields != null) { for (TreeReader child : fields) { child.seek(index); } } } }
@Override public void seek(PositionProvider[] index) throws IOException { PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } // lengths stream could be empty stream or already reached end of stream before present stream. // This can happen if all values in stream are nulls or last row group values are all null. if (_lengthStream.available() > 0) { if (_isFileCompressed) { ownIndex.getNext(); } lengths.seek(ownIndex); elementReader.seek(index); } }
@Override public void seek(PositionProvider[] index) throws IOException { PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } // lengths stream could be empty stream or already reached end of stream before present stream. // This can happen if all values in stream are nulls or last row group values are all null. if (_dataStream.available() > 0) { if (_isFileCompressed) { ownIndex.getNext(); } tags.seek(ownIndex); if (fields != null) { for (TreeReader child : fields) { child.seek(index); } } } }
@Override public void seek(PositionProvider[] index) throws IOException { // We are not calling super.seek since we handle the present stream differently. PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } // lengths stream could be empty stream or already reached end of stream before present stream. // This can happen if all values in stream are nulls or last row group values are all null. if (_lengthStream.available() > 0) { if (_isFileCompressed) { ownIndex.getNext(); } lengths.seek(ownIndex); keyReader.seek(index); valueReader.seek(index); } }
@Override public void seek(PositionProvider[] index) throws IOException { PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } if (fields != null) { for (TreeReader child : fields) { child.seek(index); } } }
@Override public void seek(PositionProvider[] index) throws IOException { PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } if (fields != null) { for (TreeReader child : fields) { if (child != null) { child.seek(index); } } } }
@Override public void seek(PositionProvider[] index) throws IOException { PositionProvider ownIndex = index[columnId]; if (present != null) { if (_isFileCompressed) { ownIndex.getNext(); } present.seek(ownIndex); } // lengths stream could be empty stream or already reached end of stream before present stream. // This can happen if all values in stream are nulls or last row group values are all null. if (_lengthStream.available() > 0) { if (_isFileCompressed) { ownIndex.getNext(); } lengths.seek(ownIndex); elementReader.seek(index); } }
private void positionInStreams(TreeReaderFactory.TreeReader[] columnReaders, OrcBatchKey batchKey, ConsumerStripeMetadata stripeMetadata) throws IOException { PositionProvider[] pps = createPositionProviders(columnReaders, batchKey, stripeMetadata); if (pps == null) return; for (int i = 0; i < columnReaders.length; i++) { if (columnReaders[i] == null) continue; // TODO: we could/should trace seek destinations; pps needs a "peek" method columnReaders[i].seek(pps); } }