1
0
Fork 0

Added (stub) implementation for skipSome at the subquery end/(start) executors

This commit is contained in:
Tobias Gödderz 2019-10-10 16:40:21 +02:00
parent ae373ca6ee
commit 079e8071b5
4 changed files with 33 additions and 0 deletions

View File

@ -393,6 +393,24 @@ static SkipVariants constexpr skipType() {
template <class Executor>
std::pair<ExecutionState, size_t> ExecutionBlockImpl<Executor>::skipSome(size_t const atMost,
size_t const subqueryDepth) {
return doSkipSome(atMost, subqueryDepth);
}
template <>
std::pair<ExecutionState, size_t> ExecutionBlockImpl<SubqueryEndExecutor>::skipSome(
size_t const atMost, size_t const subqueryDepth) {
return doSkipSome(atMost, subqueryDepth+1);
}
template <>
std::pair<ExecutionState, size_t> ExecutionBlockImpl<SubqueryStartExecutor>::skipSome(
size_t const atMost, size_t const subqueryDepth) {
return _executor.skipRowsWithDepth(atMost, subqueryDepth);
}
template <class Executor>
std::pair<ExecutionState, size_t> ExecutionBlockImpl<Executor>::doSkipSome(
size_t const atMost, size_t const subqueryDepth) {
traceSkipSomeBegin(atMost);
auto state = ExecutionState::HASMORE;

View File

@ -187,6 +187,12 @@ class ExecutionBlockImpl final : public ExecutionBlock {
*/
std::pair<ExecutionState, SharedAqlItemBlockPtr> getSomeWithoutTrace(size_t atMost);
/**
* @brief Actual skipSome implementation.
*/
std::pair<ExecutionState, size_t> doSkipSome(size_t atMost, size_t subqueryDepth);
/**
* @brief Inner skipSome() part, without the tracing calls.
*/

View File

@ -87,3 +87,9 @@ std::pair<ExecutionState, size_t> SubqueryStartExecutor::expectedNumberOfRows(si
// We might write less on all shadow rows in input, right now we do not figure this out yes.
return {state, expected * 2};
}
std::pair<ExecutionState, size_t> SubqueryStartExecutor::skipRowsWithDepth(
size_t const atMost, size_t const subqueryDepth) {
TRI_ASSERT(false);
THROW_ARANGO_EXCEPTION(TRI_ERROR_NOT_IMPLEMENTED);
}

View File

@ -68,6 +68,9 @@ class SubqueryStartExecutor {
*/
std::pair<ExecutionState, size_t> expectedNumberOfRows(size_t atMost) const;
std::pair<ExecutionState, size_t> skipRowsWithDepth(size_t const atMost,
size_t const subqueryDepth);
private:
// Fetcher to get data.
Fetcher& _fetcher;