OmniSciDB  c0231cc57d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RelCompound Class Reference

#include <RelAlgDag.h>

+ Inheritance diagram for RelCompound:
+ Collaboration diagram for RelCompound:

Public Member Functions

 RelCompound (std::unique_ptr< const RexScalar > &filter_expr, const std::vector< const Rex * > &target_exprs, const size_t groupby_count, const std::vector< const RexAgg * > &agg_exprs, const std::vector< std::string > &fields, std::vector< std::unique_ptr< const RexScalar >> &scalar_sources, const bool is_agg, bool update_disguised_as_select=false, bool delete_disguised_as_select=false, bool varlen_update_required=false, TableDescriptor const *manipulation_target_table=nullptr, ColumnNameList target_columns=ColumnNameList())
 
 RelCompound (RelCompound const &)
 
void replaceInput (std::shared_ptr< const RelAlgNode > old_input, std::shared_ptr< const RelAlgNode > input) override
 
size_t size () const override
 
const RexScalargetFilterExpr () const
 
void setFilterExpr (std::unique_ptr< const RexScalar > &new_expr)
 
const RexgetTargetExpr (const size_t i) const
 
const std::vector< std::string > & getFields () const
 
const std::string getFieldName (const size_t i) const
 
void setFields (std::vector< std::string > &&fields)
 
const size_t getScalarSourcesSize () const
 
const RexScalargetScalarSource (const size_t i) const
 
void setScalarSources (std::vector< std::unique_ptr< const RexScalar >> &new_sources)
 
const size_t getGroupByCount () const
 
bool isAggregate () const
 
size_t getAggExprSize () const
 
const RexAgggetAggExpr (size_t i) const
 
std::string toString (RelRexToStringConfig config=RelRexToStringConfig::defaults()) const override
 
size_t toHash () const override
 
std::shared_ptr< RelAlgNodedeepCopy () const override
 
void addHint (const ExplainedQueryHint &hint_explained)
 
const bool hasHintEnabled (QueryHint candidate_hint) const
 
const ExplainedQueryHintgetHintInfo (QueryHint hint) const
 
bool hasDeliveredHint ()
 
HintsgetDeliveredHints ()
 
- Public Member Functions inherited from RelAlgNode
 RelAlgNode (RelAlgInputs inputs={})
 
virtual ~RelAlgNode ()
 
void resetQueryExecutionState ()
 
void setContextData (const RaExecutionDesc *context_data) const
 
void setOutputMetainfo (const std::vector< TargetMetaInfo > &targets_metainfo) const
 
void setQueryPlanDag (const std::string &extracted_query_plan_dag) const
 
std::string getQueryPlanDag () const
 
size_t getQueryPlanDagHash () const
 
const std::vector
< TargetMetaInfo > & 
getOutputMetainfo () const
 
unsigned getId () const
 
void setIdInPlanTree (size_t id) const
 
std::optional< size_t > getIdInPlanTree () const
 
bool hasContextData () const
 
const RaExecutionDescgetContextData () const
 
const size_t inputCount () const
 
const RelAlgNodegetInput (const size_t idx) const
 
std::shared_ptr< const RelAlgNodegetAndOwnInput (const size_t idx) const
 
void addManagedInput (std::shared_ptr< const RelAlgNode > input)
 
bool hasInput (const RelAlgNode *needle) const
 
void setRelNodeDagId (const size_t id) const
 
size_t getRelNodeDagId () const
 
bool isNop () const
 
void markAsNop ()
 
void clearContextData () const
 
- Public Member Functions inherited from ModifyManipulationTarget
 ModifyManipulationTarget (bool const update_via_select=false, bool const delete_via_select=false, bool const varlen_update_required=false, TableDescriptor const *table_descriptor=nullptr, ColumnNameList target_columns=ColumnNameList())
 
void setUpdateViaSelectFlag (bool required) const
 
void setDeleteViaSelectFlag (bool required) const
 
void setVarlenUpdateRequired (bool required) const
 
void forceRowwiseOutput () const
 
TableDescriptor const * getModifiedTableDescriptor () const
 
void setModifiedTableDescriptor (TableDescriptor const *td) const
 
auto const isUpdateViaSelect () const
 
auto const isDeleteViaSelect () const
 
auto const isVarlenUpdateRequired () const
 
auto const isProjectForUpdate () const
 
auto const isRowwiseOutputForced () const
 
void setTargetColumns (ColumnNameList const &target_columns) const
 
ColumnNameList const & getTargetColumns () const
 
void invalidateTargetColumns () const
 
template<typename VALIDATION_FUNCTOR >
bool validateTargetColumns (VALIDATION_FUNCTOR validator) const
 

Private Attributes

std::unique_ptr< const RexScalarfilter_expr_
 
const size_t groupby_count_
 
std::vector< std::unique_ptr
< const RexAgg > > 
agg_exprs_
 
std::vector< std::string > fields_
 
const bool is_agg_
 
std::vector< std::unique_ptr
< const RexScalar > > 
scalar_sources_
 
const std::vector< const Rex * > target_exprs_
 
bool hint_applied_
 
std::unique_ptr< Hintshints_
 

Additional Inherited Members

- Static Public Member Functions inherited from RelAlgNode
static void resetRelAlgFirstId () noexcept
 
- Protected Attributes inherited from RelAlgNode
RelAlgInputs inputs_
 
const unsigned id_
 
std::optional< size_t > id_in_plan_tree_
 
std::optional< size_t > hash_
 

Detailed Description

Definition at line 1672 of file RelAlgDag.h.

Constructor & Destructor Documentation

RelCompound::RelCompound ( std::unique_ptr< const RexScalar > &  filter_expr,
const std::vector< const Rex * > &  target_exprs,
const size_t  groupby_count,
const std::vector< const RexAgg * > &  agg_exprs,
const std::vector< std::string > &  fields,
std::vector< std::unique_ptr< const RexScalar >> &  scalar_sources,
const bool  is_agg,
bool  update_disguised_as_select = false,
bool  delete_disguised_as_select = false,
bool  varlen_update_required = false,
TableDescriptor const *  manipulation_target_table = nullptr,
ColumnNameList  target_columns = ColumnNameList() 
)
inline

Definition at line 1677 of file RelAlgDag.h.

References agg_exprs_, and CHECK_EQ.

Referenced by toHash().

1689  : ModifyManipulationTarget(update_disguised_as_select,
1690  delete_disguised_as_select,
1691  varlen_update_required,
1692  manipulation_target_table,
1693  target_columns)
1694  , filter_expr_(std::move(filter_expr))
1695  , groupby_count_(groupby_count)
1696  , fields_(fields)
1697  , is_agg_(is_agg)
1698  , scalar_sources_(std::move(scalar_sources))
1699  , target_exprs_(target_exprs)
1700  , hint_applied_(false)
1701  , hints_(std::make_unique<Hints>()) {
1702  CHECK_EQ(fields.size(), target_exprs.size());
1703  for (auto agg_expr : agg_exprs) {
1704  agg_exprs_.emplace_back(agg_expr);
1705  }
1706  }
bool is_agg(const Analyzer::Expr *expr)
#define CHECK_EQ(x, y)
Definition: Logger.h:230
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789
bool hint_applied_
Definition: RelAlgDag.h:1792
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
const size_t groupby_count_
Definition: RelAlgDag.h:1784
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793
const std::vector< const Rex * > target_exprs_
Definition: RelAlgDag.h:1791
std::vector< std::unique_ptr< const RexAgg > > agg_exprs_
Definition: RelAlgDag.h:1785
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783
ModifyManipulationTarget(bool const update_via_select=false, bool const delete_via_select=false, bool const varlen_update_required=false, TableDescriptor const *table_descriptor=nullptr, ColumnNameList target_columns=ColumnNameList())
Definition: RelAlgDag.h:976
const bool is_agg_
Definition: RelAlgDag.h:1787

+ Here is the caller graph for this function:

RelCompound::RelCompound ( RelCompound const &  rhs)

Definition at line 660 of file RelAlgDag.cpp.

References addHint(), filter_expr_, hint_applied_, hints_, and RexVisitorBase< T >::visit().

661  : RelAlgNode(rhs)
663  , groupby_count_(rhs.groupby_count_)
664  , agg_exprs_(copyAggExprs(rhs.agg_exprs_))
665  , fields_(rhs.fields_)
666  , is_agg_(rhs.is_agg_)
667  , scalar_sources_(copyRexScalars(rhs.scalar_sources_))
670  rhs.agg_exprs_,
671  rhs.scalar_sources_,
672  rhs.target_exprs_))
673  , hint_applied_(false)
674  , hints_(std::make_unique<Hints>()) {
675  RexDeepCopyVisitor copier;
676  filter_expr_ = rhs.filter_expr_ ? copier.visit(rhs.filter_expr_.get()) : nullptr;
677  if (rhs.hint_applied_) {
678  for (auto const& kv : *rhs.hints_) {
679  addHint(kv.second);
680  }
681  }
682 }
RelAlgNode(RelAlgInputs inputs={})
Definition: RelAlgDag.h:774
void addHint(const ExplainedQueryHint &hint_explained)
Definition: RelAlgDag.h:1757
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789
bool hint_applied_
Definition: RelAlgDag.h:1792
virtual T visit(const RexScalar *rex_scalar) const
Definition: RexVisitor.h:27
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
std::vector< std::unique_ptr< const RexScalar > > copyRexScalars(std::vector< std::unique_ptr< const RexScalar >> const &scalar_sources)
Definition: RelAlgDag.cpp:625
std::vector< const Rex * > remapTargetPointers(std::vector< std::unique_ptr< const RexAgg >> const &agg_exprs_new, std::vector< std::unique_ptr< const RexScalar >> const &scalar_sources_new, std::vector< std::unique_ptr< const RexAgg >> const &agg_exprs_old, std::vector< std::unique_ptr< const RexScalar >> const &scalar_sources_old, std::vector< const Rex * > const &target_exprs_old)
Definition: RelAlgDag.cpp:636
const size_t groupby_count_
Definition: RelAlgDag.h:1784
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793
const std::vector< const Rex * > target_exprs_
Definition: RelAlgDag.h:1791
std::vector< std::unique_ptr< const RexAgg > > agg_exprs_
Definition: RelAlgDag.h:1785
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783
std::vector< std::unique_ptr< const RexAgg > > copyAggExprs(std::vector< std::unique_ptr< const RexAgg >> const &agg_exprs)
Definition: RelAlgDag.cpp:615
ModifyManipulationTarget(bool const update_via_select=false, bool const delete_via_select=false, bool const varlen_update_required=false, TableDescriptor const *table_descriptor=nullptr, ColumnNameList target_columns=ColumnNameList())
Definition: RelAlgDag.h:976
const bool is_agg_
Definition: RelAlgDag.h:1787

+ Here is the call graph for this function:

Member Function Documentation

void RelCompound::addHint ( const ExplainedQueryHint hint_explained)
inline

Definition at line 1757 of file RelAlgDag.h.

References ExplainedQueryHint::getHint(), hint_applied_, and hints_.

Referenced by RelCompound().

1757  {
1758  if (!hint_applied_) {
1759  hint_applied_ = true;
1760  }
1761  hints_->emplace(hint_explained.getHint(), hint_explained);
1762  }
bool hint_applied_
Definition: RelAlgDag.h:1792
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793
const QueryHint getHint() const
Definition: QueryHint.h:123

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::shared_ptr<RelAlgNode> RelCompound::deepCopy ( ) const
inlineoverridevirtual

Implements RelAlgNode.

Definition at line 1753 of file RelAlgDag.h.

1753  {
1754  return std::make_shared<RelCompound>(*this);
1755  }
const RexAgg* RelCompound::getAggExpr ( size_t  i) const
inline

Definition at line 1746 of file RelAlgDag.h.

References agg_exprs_.

1746 { return agg_exprs_[i].get(); }
std::vector< std::unique_ptr< const RexAgg > > agg_exprs_
Definition: RelAlgDag.h:1785
size_t RelCompound::getAggExprSize ( ) const
inline

Definition at line 1744 of file RelAlgDag.h.

References agg_exprs_.

1744 { return agg_exprs_.size(); }
std::vector< std::unique_ptr< const RexAgg > > agg_exprs_
Definition: RelAlgDag.h:1785
Hints* RelCompound::getDeliveredHints ( )
inline

Definition at line 1780 of file RelAlgDag.h.

References hints_.

Referenced by anonymous_namespace{RelAlgDag.cpp}::handle_query_hint().

1780 { return hints_.get(); }
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793

+ Here is the caller graph for this function:

const std::string RelCompound::getFieldName ( const size_t  i) const
inline

Definition at line 1725 of file RelAlgDag.h.

References fields_.

1725 { return fields_[i]; }
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
const std::vector<std::string>& RelCompound::getFields ( ) const
inline

Definition at line 1723 of file RelAlgDag.h.

References fields_.

1723 { return fields_; }
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
const RexScalar* RelCompound::getFilterExpr ( ) const
inline

Definition at line 1715 of file RelAlgDag.h.

References filter_expr_.

Referenced by anonymous_namespace{RelAlgExecutor.cpp}::get_used_inputs(), anonymous_namespace{RelAlgExecutor.cpp}::translate_quals(), RelRexDagVisitor::visit(), and anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitCompound().

1715 { return filter_expr_.get(); }
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783

+ Here is the caller graph for this function:

const size_t RelCompound::getGroupByCount ( ) const
inline

Definition at line 1740 of file RelAlgDag.h.

References groupby_count_.

Referenced by anonymous_namespace{RelAlgExecutor.cpp}::translate_groupby_exprs().

1740 { return groupby_count_; }
const size_t groupby_count_
Definition: RelAlgDag.h:1784

+ Here is the caller graph for this function:

const ExplainedQueryHint& RelCompound::getHintInfo ( QueryHint  hint) const
inline

Definition at line 1771 of file RelAlgDag.h.

References CHECK, hasHintEnabled(), hint_applied_, and hints_.

1771  {
1773  CHECK(!hints_->empty());
1774  CHECK(hasHintEnabled(hint));
1775  return hints_->at(hint);
1776  }
bool hint_applied_
Definition: RelAlgDag.h:1792
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793
#define CHECK(condition)
Definition: Logger.h:222
const bool hasHintEnabled(QueryHint candidate_hint) const
Definition: RelAlgDag.h:1764

+ Here is the call graph for this function:

const RexScalar* RelCompound::getScalarSource ( const size_t  i) const
inline

Definition at line 1731 of file RelAlgDag.h.

References scalar_sources_.

Referenced by anonymous_namespace{RelAlgExecutor.cpp}::get_used_inputs(), anonymous_namespace{RelAlgExecutor.cpp}::scalar_at(), RelRexDagVisitor::visit(), and anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitCompound().

1731  {
1732  return scalar_sources_[i].get();
1733  }
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789

+ Here is the caller graph for this function:

const size_t RelCompound::getScalarSourcesSize ( ) const
inline

Definition at line 1729 of file RelAlgDag.h.

References scalar_sources_.

Referenced by anonymous_namespace{RelAlgExecutor.cpp}::get_scalar_sources_size(), anonymous_namespace{RelAlgExecutor.cpp}::get_used_inputs(), RelRexDagVisitor::visit(), and anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitCompound().

1729 { return scalar_sources_.size(); }
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789

+ Here is the caller graph for this function:

const Rex* RelCompound::getTargetExpr ( const size_t  i) const
inline

Definition at line 1721 of file RelAlgDag.h.

References target_exprs_.

Referenced by anonymous_namespace{RelAlgExecutor.cpp}::translate_targets(), and QueryPlanDagChecker::visit().

1721 { return target_exprs_[i]; }
const std::vector< const Rex * > target_exprs_
Definition: RelAlgDag.h:1791

+ Here is the caller graph for this function:

bool RelCompound::hasDeliveredHint ( )
inline

Definition at line 1778 of file RelAlgDag.h.

References hints_.

1778 { return !hints_->empty(); }
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793
const bool RelCompound::hasHintEnabled ( QueryHint  candidate_hint) const
inline

Definition at line 1764 of file RelAlgDag.h.

References hint_applied_, and hints_.

Referenced by getHintInfo().

1764  {
1765  if (hint_applied_ && !hints_->empty()) {
1766  return hints_->find(candidate_hint) != hints_->end();
1767  }
1768  return false;
1769  }
bool hint_applied_
Definition: RelAlgDag.h:1792
std::unique_ptr< Hints > hints_
Definition: RelAlgDag.h:1793

+ Here is the caller graph for this function:

bool RelCompound::isAggregate ( ) const
inline

Definition at line 1742 of file RelAlgDag.h.

References is_agg_.

Referenced by RelAlgExecutor::executeCompound(), anonymous_namespace{RelAlgExecutor.cpp}::translate_groupby_exprs(), and QueryPlanDagChecker::visit().

1742 { return is_agg_; }
const bool is_agg_
Definition: RelAlgDag.h:1787

+ Here is the caller graph for this function:

void RelCompound::replaceInput ( std::shared_ptr< const RelAlgNode old_input,
std::shared_ptr< const RelAlgNode input 
)
overridevirtual

Reimplemented from RelAlgNode.

Definition at line 543 of file RelAlgDag.cpp.

References filter_expr_, RelAlgNode::replaceInput(), and scalar_sources_.

544  {
545  RelAlgNode::replaceInput(old_input, input);
546  RexRebindInputsVisitor rebind_inputs(old_input.get(), input.get());
547  for (const auto& scalar_source : scalar_sources_) {
548  rebind_inputs.visit(scalar_source.get());
549  }
550  if (filter_expr_) {
551  rebind_inputs.visit(filter_expr_.get());
552  }
553 }
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789
virtual void replaceInput(std::shared_ptr< const RelAlgNode > old_input, std::shared_ptr< const RelAlgNode > input)
Definition: RelAlgDag.h:849
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783

+ Here is the call graph for this function:

void RelCompound::setFields ( std::vector< std::string > &&  fields)
inline

Definition at line 1727 of file RelAlgDag.h.

References fields_.

1727 { fields_ = std::move(fields); }
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
void RelCompound::setFilterExpr ( std::unique_ptr< const RexScalar > &  new_expr)
inline

Definition at line 1717 of file RelAlgDag.h.

References filter_expr_.

1717  {
1718  filter_expr_ = std::move(new_expr);
1719  }
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783
void RelCompound::setScalarSources ( std::vector< std::unique_ptr< const RexScalar >> &  new_sources)
inline

Definition at line 1735 of file RelAlgDag.h.

References CHECK_EQ, and scalar_sources_.

1735  {
1736  CHECK_EQ(new_sources.size(), scalar_sources_.size());
1737  scalar_sources_ = std::move(new_sources);
1738  }
#define CHECK_EQ(x, y)
Definition: Logger.h:230
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789
size_t RelCompound::size ( ) const
inlineoverridevirtual

Implements RelAlgNode.

Definition at line 1713 of file RelAlgDag.h.

References target_exprs_.

Referenced by RelAlgExecutor::createCompoundWorkUnit(), anonymous_namespace{RelAlgExecutor.cpp}::translate_targets(), and QueryPlanDagChecker::visit().

1713 { return target_exprs_.size(); }
const std::vector< const Rex * > target_exprs_
Definition: RelAlgDag.h:1791

+ Here is the caller graph for this function:

size_t RelCompound::toHash ( ) const
overridevirtual

Implements RelAlgNode.

Definition at line 3296 of file RelAlgDag.cpp.

References agg_exprs_, fields_, filter_expr_, groupby_count_, RelAlgNode::hash_, HASH_N, is_agg_, RelCompound(), scalar_sources_, target_exprs_, and toString().

3296  {
3297  if (!hash_) {
3298  hash_ = typeid(RelCompound).hash_code();
3299  boost::hash_combine(*hash_, filter_expr_ ? filter_expr_->toHash() : HASH_N);
3300  boost::hash_combine(*hash_, is_agg_);
3301  for (auto& target_expr : target_exprs_) {
3302  if (auto rex_scalar = dynamic_cast<const RexScalar*>(target_expr)) {
3303  boost::hash_combine(*hash_, rex_scalar->toHash());
3304  }
3305  }
3306  for (auto& agg_expr : agg_exprs_) {
3307  boost::hash_combine(*hash_, agg_expr->toHash());
3308  }
3309  for (auto& scalar_source : scalar_sources_) {
3310  boost::hash_combine(*hash_, scalar_source->toHash());
3311  }
3312  boost::hash_combine(*hash_, groupby_count_);
3313  boost::hash_combine(*hash_, ::toString(fields_));
3314  }
3315  return *hash_;
3316 }
std::string toString(RelRexToStringConfig config=RelRexToStringConfig::defaults()) const override
Definition: RelAlgDag.cpp:3270
RelCompound(std::unique_ptr< const RexScalar > &filter_expr, const std::vector< const Rex * > &target_exprs, const size_t groupby_count, const std::vector< const RexAgg * > &agg_exprs, const std::vector< std::string > &fields, std::vector< std::unique_ptr< const RexScalar >> &scalar_sources, const bool is_agg, bool update_disguised_as_select=false, bool delete_disguised_as_select=false, bool varlen_update_required=false, TableDescriptor const *manipulation_target_table=nullptr, ColumnNameList target_columns=ColumnNameList())
Definition: RelAlgDag.h:1677
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789
static auto const HASH_N
Definition: RelAlgDag.h:44
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
const size_t groupby_count_
Definition: RelAlgDag.h:1784
std::optional< size_t > hash_
Definition: RelAlgDag.h:889
const std::vector< const Rex * > target_exprs_
Definition: RelAlgDag.h:1791
std::vector< std::unique_ptr< const RexAgg > > agg_exprs_
Definition: RelAlgDag.h:1785
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783
const bool is_agg_
Definition: RelAlgDag.h:1787

+ Here is the call graph for this function:

std::string RelCompound::toString ( RelRexToStringConfig  config = RelRexToStringConfig::defaults()) const
overridevirtual

Implements RelAlgNode.

Definition at line 3270 of file RelAlgDag.cpp.

References agg_exprs_, cat(), fields_, filter_expr_, groupby_count_, is_agg_, scalar_sources_, target_exprs_, to_string(), and typeName().

Referenced by toHash().

3270  {
3271  auto ret = cat(::typeName(this),
3272  ", filter_expr=",
3273  (filter_expr_ ? filter_expr_->toString(config) : "null"),
3274  ", target_exprs=");
3275  for (auto& expr : target_exprs_) {
3276  ret += expr->toString(config) + " ";
3277  }
3278  ret += ", agg_exps=";
3279  for (auto& expr : agg_exprs_) {
3280  ret += expr->toString(config) + " ";
3281  }
3282  ret += ", scalar_sources=";
3283  for (auto& expr : scalar_sources_) {
3284  ret += expr->toString(config) + " ";
3285  }
3286  return cat(ret,
3287  ", ",
3289  ", ",
3290  ", fields=",
3291  ::toString(fields_),
3292  ", is_agg=",
3294 }
std::string cat(Ts &&...args)
std::string toString(RelRexToStringConfig config=RelRexToStringConfig::defaults()) const override
Definition: RelAlgDag.cpp:3270
std::vector< std::unique_ptr< const RexScalar > > scalar_sources_
Definition: RelAlgDag.h:1789
std::string to_string(char const *&&v)
std::vector< std::string > fields_
Definition: RelAlgDag.h:1786
const size_t groupby_count_
Definition: RelAlgDag.h:1784
const std::vector< const Rex * > target_exprs_
Definition: RelAlgDag.h:1791
std::vector< std::unique_ptr< const RexAgg > > agg_exprs_
Definition: RelAlgDag.h:1785
std::unique_ptr< const RexScalar > filter_expr_
Definition: RelAlgDag.h:1783
std::string typeName(const T *v)
Definition: toString.h:103
const bool is_agg_
Definition: RelAlgDag.h:1787

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

std::vector<std::unique_ptr<const RexAgg> > RelCompound::agg_exprs_
private

Definition at line 1785 of file RelAlgDag.h.

Referenced by getAggExpr(), getAggExprSize(), RelCompound(), toHash(), and toString().

std::vector<std::string> RelCompound::fields_
private

Definition at line 1786 of file RelAlgDag.h.

Referenced by getFieldName(), getFields(), setFields(), toHash(), and toString().

std::unique_ptr<const RexScalar> RelCompound::filter_expr_
private

Definition at line 1783 of file RelAlgDag.h.

Referenced by getFilterExpr(), RelCompound(), replaceInput(), setFilterExpr(), toHash(), and toString().

const size_t RelCompound::groupby_count_
private

Definition at line 1784 of file RelAlgDag.h.

Referenced by getGroupByCount(), toHash(), and toString().

bool RelCompound::hint_applied_
private

Definition at line 1792 of file RelAlgDag.h.

Referenced by addHint(), getHintInfo(), hasHintEnabled(), and RelCompound().

std::unique_ptr<Hints> RelCompound::hints_
private
const bool RelCompound::is_agg_
private

Definition at line 1787 of file RelAlgDag.h.

Referenced by isAggregate(), toHash(), and toString().

std::vector<std::unique_ptr<const RexScalar> > RelCompound::scalar_sources_
private
const std::vector<const Rex*> RelCompound::target_exprs_
private

Definition at line 1791 of file RelAlgDag.h.

Referenced by getTargetExpr(), size(), toHash(), and toString().


The documentation for this class was generated from the following files: