diff --git a/velox/dwio/dwrf/reader/DwrfReader.cpp b/velox/dwio/dwrf/reader/DwrfReader.cpp index d20d67bbb0a9..b09c54433876 100644 --- a/velox/dwio/dwrf/reader/DwrfReader.cpp +++ b/velox/dwio/dwrf/reader/DwrfReader.cpp @@ -588,6 +588,17 @@ int64_t DwrfRowReader::nextRowNumber() { return kAtEnd; } +uint64_t DwrfRowReader::rowNumber() { + const auto nextRow = nextRowNumber(); + if (nextRow != kAtEnd) { + return nextRow; + } + if (isEmptyFile()) { + return 0; + } + return getReader().footer().numberOfRows(); +} + int64_t DwrfRowReader::nextReadSize(uint64_t size) { VELOX_DCHECK_GT(size, 0); if (nextRowNumber() == kAtEnd) { diff --git a/velox/dwio/dwrf/reader/DwrfReader.h b/velox/dwio/dwrf/reader/DwrfReader.h index 43a4dc5fae7b..f156f0dd1b79 100644 --- a/velox/dwio/dwrf/reader/DwrfReader.h +++ b/velox/dwio/dwrf/reader/DwrfReader.h @@ -79,9 +79,7 @@ class DwrfRowReader : public StrideIndexProvider, return selectedSchema_; } - uint64_t rowNumber() const { - return previousRow_; - } + uint64_t rowNumber(); uint64_t seekToRow(uint64_t rowNumber);