@@ -160,6 +160,8 @@ class RangeCacheFileReader : public io::FileReader {
160160
161161 bool closed () const override { return _closed; }
162162
163+ int64_t mtime () const override { return _inner_reader->mtime (); }
164+
163165protected:
164166 Status read_at_impl (size_t offset, Slice result, size_t * bytes_read,
165167 const IOContext* io_ctx) override ;
@@ -329,6 +331,8 @@ class MergeRangeFileReader : public io::FileReader {
329331
330332 bool closed () const override { return _closed; }
331333
334+ int64_t mtime () const override { return _reader->mtime (); }
335+
332336 // for test only
333337 size_t buffer_remaining () const { return _remaining; }
334338
@@ -532,6 +536,8 @@ class PrefetchBufferedReader final : public io::FileReader {
532536
533537 bool closed () const override { return _closed; }
534538
539+ int64_t mtime () const override { return _reader->mtime (); }
540+
535541 void set_random_access_ranges (const std::vector<PrefetchRange>* random_access_ranges) {
536542 _random_access_ranges = random_access_ranges;
537543 for (auto & _pre_buffer : _pre_buffers) {
@@ -592,6 +598,8 @@ class InMemoryFileReader final : public io::FileReader {
592598
593599 bool closed () const override { return _closed; }
594600
601+ int64_t mtime () const override { return _reader->mtime (); }
602+
595603protected:
596604 Status read_at_impl (size_t offset, Slice result, size_t * bytes_read,
597605 const IOContext* io_ctx) override ;
@@ -626,6 +634,8 @@ class BufferedStreamReader {
626634 virtual ~BufferedStreamReader () = default ;
627635 // return the file path
628636 virtual std::string path () = 0;
637+
638+ virtual int64_t mtime () const = 0;
629639};
630640
631641class BufferedFileStreamReader : public BufferedStreamReader , public ProfileCollector {
@@ -639,6 +649,8 @@ class BufferedFileStreamReader : public BufferedStreamReader, public ProfileColl
639649 Status read_bytes (Slice& slice, uint64_t offset, const IOContext* io_ctx) override ;
640650 std::string path () override { return _file->path (); }
641651
652+ int64_t mtime () const override { return _file->mtime (); }
653+
642654protected:
643655 void _collect_profile_before_close () override {
644656 if (_file != nullptr ) {
0 commit comments