int64_t CopyOnWriteContext::handleStreamMore(TupleOutputStreamProcessor &outputStreams, std::vector<int> &retPositions) { int64_t remaining = serializeMore(outputStreams); // If more was streamed copy current positions for return. // Can this copy be avoided? for (size_t i = 0; i < outputStreams.size(); i++) { retPositions.push_back((int)outputStreams.at(i).position()); } return remaining; }
/** * Mandatory TableStreamContext override. */ int64_t RecoveryContext::handleStreamMore(TupleOutputStreamProcessor &outputStreams, std::vector<int> &retPositions) { if (outputStreams.size() != 1) { throwFatalException("RecoveryContext::handleStreamMore: Expect 1 output stream " "for recovery, received %ld", outputStreams.size()); } /* * Table ids don't change during recovery because * catalog changes are not allowed. */ bool hasMore = nextMessage(&outputStreams[0]); // Non-zero if some tuples remain, we're just not sure how many. int64_t remaining = (hasMore ? 1 : 0); for (size_t i = 0; i < outputStreams.size(); i++) { retPositions.push_back((int)outputStreams.at(i).position()); } return remaining; }