Class RelProject

class RelProject : public RelAlgNode, public ModifyManipulationTarget

Public Types

using ConstRexScalarPtr = std::unique_ptr<const RexScalar>
using ConstRexScalarPtrVector = std::vector<ConstRexScalarPtr>

Public Functions

RelProject(std::vector<std::unique_ptr<const RexScalar>> &scalar_exprs, const std::vector<std::string> &fields, std::shared_ptr<const RelAlgNode> input)
RelProject(RelProject const &rhs)
void setExpressions(std::vector<std::unique_ptr<const RexScalar>> &exprs) const
bool isSimple() const
bool isIdentity() const
bool isRenaming() const
size_t size() const
const RexScalar *getProjectAt(const size_t idx) const
const RexScalar *getProjectAtAndRelease(const size_t idx) const
std::vector<std::unique_ptr<const RexScalar>> getExpressionsAndRelease()
const std::vector<std::string> &getFields() const
void setFields(std::vector<std::string> &&fields)
const std::string getFieldName(const size_t i) const
void replaceInput(std::shared_ptr<const RelAlgNode> old_input, std::shared_ptr<const RelAlgNode> input)
void replaceInput(std::shared_ptr<const RelAlgNode> old_input, std::shared_ptr<const RelAlgNode> input, std::optional<std::unordered_map<unsigned, unsigned>> old_to_new_index_map)
void appendInput(std::string new_field_name, std::unique_ptr<const RexScalar> new_input)
std::string toString() const
size_t toHash() const
std::shared_ptr<RelAlgNode> deepCopy() const
bool hasWindowFunctionExpr() const
void addHint(const ExplainedQueryHint &hint_explained)
const bool hasHintEnabled(QueryHint candidate_hint) const
const ExplainedQueryHint &getHintInfo(QueryHint hint) const
bool hasDeliveredHint()
Hints *getDeliveredHints()

Private Functions

template<typename EXPR_VISITOR_FUNCTOR>
void visitScalarExprs(EXPR_VISITOR_FUNCTOR visitor_functor) const
void injectOffsetInFragmentExpr() const

Private Members

std::vector<std::unique_ptr<const RexScalar>> scalar_exprs_
std::vector<std::string> fields_
bool hint_applied_
std::unique_ptr<Hints> hints_

Friends

friend RelProject::RelModify