Fix pull logic for multiframe
This commit is contained in:
parent
c139856b2a
commit
e40f7f507b
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2022 Memgraph Ltd.
|
// Copyright 2023 Memgraph Ltd.
|
||||||
//
|
//
|
||||||
// Use of this software is governed by the Business Source License
|
// Use of this software is governed by the Business Source License
|
||||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||||
@ -734,7 +734,7 @@ std::optional<plan::ProfilingStatsWithTotalTime> PullPlan::PullMultiple(AnyStrea
|
|||||||
// Returns true if a result was pulled.
|
// Returns true if a result was pulled.
|
||||||
const auto pull_result = [&]() -> bool {
|
const auto pull_result = [&]() -> bool {
|
||||||
cursor_->PullMultiple(multi_frame_, ctx_);
|
cursor_->PullMultiple(multi_frame_, ctx_);
|
||||||
return multi_frame_.HasValidFrame();
|
return !multi_frame_.HasInvalidFrame();
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto stream_values = [&output_symbols, &stream](const Frame &frame) {
|
const auto stream_values = [&output_symbols, &stream](const Frame &frame) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2022 Memgraph Ltd.
|
// Copyright 2023 Memgraph Ltd.
|
||||||
//
|
//
|
||||||
// Use of this software is governed by the Business Source License
|
// Use of this software is governed by the Business Source License
|
||||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||||
@ -48,6 +48,10 @@ 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(), [](auto &frame) { return frame.IsValid(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MultiFrame::HasInvalidFrame() const noexcept {
|
||||||
|
return std::any_of(frames_.rbegin(), frames_.rend(), [](auto &frame) { return !frame.IsValid(); });
|
||||||
|
}
|
||||||
|
|
||||||
// NOLINTNEXTLINE (bugprone-exception-escape)
|
// NOLINTNEXTLINE (bugprone-exception-escape)
|
||||||
void MultiFrame::DefragmentValidFrames() noexcept {
|
void MultiFrame::DefragmentValidFrames() noexcept {
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2022 Memgraph Ltd.
|
// Copyright 2023 Memgraph Ltd.
|
||||||
//
|
//
|
||||||
// Use of this software is governed by the Business Source License
|
// Use of this software is governed by the Business Source License
|
||||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||||
@ -81,6 +81,7 @@ class MultiFrame {
|
|||||||
void MakeAllFramesInvalid() noexcept;
|
void MakeAllFramesInvalid() noexcept;
|
||||||
|
|
||||||
bool HasValidFrame() const noexcept;
|
bool HasValidFrame() const noexcept;
|
||||||
|
bool HasInvalidFrame() const noexcept;
|
||||||
|
|
||||||
inline utils::MemoryResource *GetMemoryResource() { return frames_[0].GetMemoryResource(); }
|
inline utils::MemoryResource *GetMemoryResource() { return frames_[0].GetMemoryResource(); }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user