diff --git a/src/query/v2/multiframe.cpp b/src/query/v2/multiframe.cpp
index 835cdbc0f..38cc7549a 100644
--- a/src/query/v2/multiframe.cpp
+++ b/src/query/v2/multiframe.cpp
@@ -45,7 +45,11 @@ void MultiFrame::MakeAllFramesInvalid() noexcept {
 }
 
 bool MultiFrame::HasValidFrame() const noexcept {
-  return std::any_of(frames_.begin(), frames_.end(), [](auto &frame) { return frame.IsValid(); });
+  return std::any_of(frames_.begin(), frames_.end(), [](const auto &frame) { return frame.IsValid(); });
+}
+
+bool MultiFrame::HasInvalidFrame() const noexcept {
+  return std::any_of(frames_.rbegin(), frames_.rend(), [](const auto &frame) { return !frame.IsValid(); });
 }
 
 // NOLINTNEXTLINE (bugprone-exception-escape)
diff --git a/src/query/v2/multiframe.hpp b/src/query/v2/multiframe.hpp
index f464343b4..6958ffbe8 100644
--- a/src/query/v2/multiframe.hpp
+++ b/src/query/v2/multiframe.hpp
@@ -82,6 +82,7 @@ class MultiFrame {
   void MakeAllFramesInvalid() noexcept;
 
   bool HasValidFrame() const noexcept;
+  bool HasInvalidFrame() const noexcept;
 
   inline utils::MemoryResource *GetMemoryResource() { return frames_[0].GetMemoryResource(); }