#pragma once
#include "expression_evaluator/expression_evaluator.h"
namespace lbug {
namespace evaluator {
class InternalIDExpressionEvaluator : public ExpressionEvaluator {
static constexpr EvaluatorType type_ = EvaluatorType::REFERENCE;
public:
InternalIDExpressionEvaluator(std::shared_ptr<binder::Expression> expression,
std::unique_ptr<ExpressionEvaluator> baseEvaluator)
: ExpressionEvaluator{type_, std::move(expression)} {
children.push_back(std::move(baseEvaluator));
}
void evaluate() override;
bool selectInternal(common::SelectionVector& selVector) override;
std::unique_ptr<ExpressionEvaluator> copy() override {
return std::make_unique<InternalIDExpressionEvaluator>(expression, children[0]->copy());
}
protected:
void resolveResultVector(const processor::ResultSet& resultSet,
storage::MemoryManager* memoryManager) override;
};
} }