Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::RemoveUnusedColumns Class Reference

The RemoveUnusedColumns optimizer traverses the logical operator tree and removes any columns that are not required. More...

Inheritance diagram for duckdb::RemoveUnusedColumns:
Collaboration diagram for duckdb::RemoveUnusedColumns:

Public Member Functions

 RemoveUnusedColumns (Optimizer &optimizer)
 
 RemoveUnusedColumns (RemoveUnusedColumns &parent, bool is_root)
 
void VisitOperator (LogicalOperator &op) override
 

Private Member Functions

template<class T >
void ClearUnusedExpressions (vector< T > &list, idx_t table_idx, bool replace=true)
 
void RemoveColumnsFromLogicalGet (LogicalGet &get)
 
void CheckPushdownExtract (LogicalOperator &op)
 
void RewriteExpressions (LogicalProjection &proj, idx_t expression_count)
 
void WritePushdownExtractColumns (const ColumnBinding &binding, ReferencedColumn &col, idx_t original_idx, const LogicalType &column_type, const std::function< idx_t(const ColumnIndex &new_index, optional_ptr< const LogicalType > cast_type)> &callback)
 
unordered_map< idx_t, MaterializedCTEInfo > & GetCTEMap ()
 
optional_ptr< unordered_map< idx_t, MaterializedCTEInfo > > TryGetCTEMap ()
 

Private Attributes

Optimizeroptimizer
 
Binderbinder
 
ClientContextcontext
 
bool everything_referenced
 
RemoveUnusedColumnsroot
 
unique_ptr< unordered_map< idx_t, MaterializedCTEInfo > > root_cte_map
 

Additional Inherited Members

- Static Public Member Functions inherited from duckdb::LogicalOperatorVisitor
static void EnumerateExpressions (LogicalOperator &op, const std::function< void(unique_ptr< Expression > *child)> &callback)
 
- Protected Member Functions inherited from duckdb::BaseColumnPruner
void VisitExpression (unique_ptr< Expression > *expression) override
 
unique_ptr< ExpressionVisitReplace (BoundColumnRefExpression &expr, unique_ptr< Expression > *expr_ptr) override
 
unique_ptr< ExpressionVisitReplace (BoundReferenceExpression &expr, unique_ptr< Expression > *expr_ptr) override
 
void AddBinding (BoundColumnRefExpression &col)
 Add a reference to the column in its entirey.
 
void AddBinding (BoundColumnRefExpression &col, ColumnIndex child_column)
 Add a reference to a sub-section of the column.
 
void AddBinding (BoundColumnRefExpression &col, ColumnIndex child_column, const vector< ReferencedExtractComponent > &parent)
 Add a reference to a sub-section of the column used in a struct extract, with the parent expression.
 
idx_t ReplaceBinding (ColumnBinding current_binding, ColumnBinding new_binding)
 
bool HandleExtractExpression (unique_ptr< Expression > *expression, optional_ptr< unique_ptr< Expression > > cast_expression=nullptr)
 
bool HandleStructExtract (unique_ptr< Expression > &expr, optional_ptr< BoundColumnRefExpression > &colref, reference< ColumnIndex > &path_ref, vector< ReferencedExtractComponent > &expressions)
 
bool HandleVariantExtract (unique_ptr< Expression > &expr, optional_ptr< BoundColumnRefExpression > &colref, reference< ColumnIndex > &path_ref, vector< ReferencedExtractComponent > &expressions)
 
bool HandleExtractRecursive (unique_ptr< Expression > &expr, optional_ptr< BoundColumnRefExpression > &colref, reference< ColumnIndex > &path_ref, vector< ReferencedExtractComponent > &expressions)
 
void SetMode (BaseColumnPrunerMode mode)
 
BaseColumnPrunerMode GetMode () const
 
- Protected Member Functions inherited from duckdb::LogicalOperatorVisitor
void VisitOperatorChildren (LogicalOperator &op)
 
void VisitOperatorExpressions (LogicalOperator &op)
 
void VisitOperatorWithProjectionMapChildren (LogicalOperator &op)
 Alternatives for VisitOperatorChildren for operators that have a projection map.
 
void VisitChildOfOperatorWithProjectionMap (LogicalOperator &child, vector< idx_t > &projection_map)
 
virtual void VisitExpressionChildren (Expression &expression)
 
virtual unique_ptr< ExpressionVisitReplace (BoundAggregateExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundBetweenExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundCaseExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundCastExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundComparisonExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundConjunctionExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundConstantExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundDefaultExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundFunctionExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundOperatorExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundSubqueryExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundParameterExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundWindowExpression &expr, unique_ptr< Expression > *expr_ptr)
 
virtual unique_ptr< ExpressionVisitReplace (BoundUnnestExpression &expr, unique_ptr< Expression > *expr_ptr)
 
- Protected Attributes inherited from duckdb::BaseColumnPruner
column_binding_map_t< ReferencedColumncolumn_references
 The map of column references.
 

Detailed Description

The RemoveUnusedColumns optimizer traverses the logical operator tree and removes any columns that are not required.

Member Function Documentation

◆ VisitOperator()

void duckdb::RemoveUnusedColumns::VisitOperator ( LogicalOperator op)
overridevirtual

Reimplemented from duckdb::LogicalOperatorVisitor.

Member Data Documentation

◆ everything_referenced

bool duckdb::RemoveUnusedColumns::everything_referenced
private

Whether or not all the columns are referenced. This happens in the case of the root expression (because the output implicitly refers all the columns below it)


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