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::FilterCombiner Class Reference
Collaboration diagram for duckdb::FilterCombiner:

Classes

struct  ExpressionValueInformation
 

Public Member Functions

 FilterCombiner (ClientContext &context)
 
 FilterCombiner (Optimizer &optimizer)
 
FilterResult AddFilter (unique_ptr< Expression > expr)
 
void GenerateFilters (const std::function< void(unique_ptr< Expression > filter)> &callback)
 
bool HasFilters ()
 
TableFilterSet GenerateTableScanFilters (const vector< ColumnIndex > &column_ids, vector< FilterPushdownResult > &pushdown_results)
 
FilterPushdownResult TryPushdownGenericExpression (LogicalGet &get, Expression &expr)
 

Static Public Member Functions

static bool IsDenseRange (vector< Value > &in_list)
 
static bool ContainsNull (vector< Value > &in_list)
 
static bool FindNextLegalUTF8 (string &prefix_string)
 

Public Attributes

ClientContextcontext
 

Private Member Functions

FilterResult AddFilter (Expression &expr)
 
FilterResult AddBoundComparisonFilter (Expression &expr)
 
FilterResult AddTransitiveFilters (BoundComparisonExpression &comparison, bool is_root=true)
 
unique_ptr< ExpressionFindTransitiveFilter (Expression &expr)
 
ExpressionGetNode (Expression &expr)
 
idx_t GetEquivalenceSet (Expression &expr)
 
FilterResult AddConstantComparison (vector< ExpressionValueInformation > &info_list, ExpressionValueInformation info)
 
FilterPushdownResult TryPushdownConstantFilter (TableFilterSet &table_filters, const vector< ColumnIndex > &column_ids, column_t column_id, vector< ExpressionValueInformation > &info_list)
 
FilterPushdownResult TryPushdownExpression (TableFilterSet &table_filters, const vector< ColumnIndex > &column_ids, Expression &expr)
 
FilterPushdownResult TryPushdownPrefixFilter (TableFilterSet &table_filters, const vector< ColumnIndex > &column_ids, Expression &expr)
 
FilterPushdownResult TryPushdownLikeFilter (TableFilterSet &table_filters, const vector< ColumnIndex > &column_ids, Expression &expr)
 
FilterPushdownResult TryPushdownInFilter (TableFilterSet &table_filters, const vector< ColumnIndex > &column_ids, Expression &expr)
 
FilterPushdownResult TryPushdownOrClause (TableFilterSet &table_filters, const vector< ColumnIndex > &column_ids, Expression &expr)
 

Private Attributes

vector< unique_ptr< Expression > > remaining_filters
 
expression_map_t< unique_ptr< Expression > > stored_expressions
 
expression_map_t< idx_tequivalence_set_map
 
map< idx_t, vector< ExpressionValueInformation > > constant_values
 
map< idx_t, vector< reference< Expression > > > equivalence_map
 
idx_t set_index = 0
 

Detailed Description

The FilterCombiner combines several filters and generates a logically equivalent set that is more efficient Amongst others: (1) it prunes obsolete filter conditions: i.e. [X > 5 and X > 7] => [X > 7] (2) it generates new filters for expressions in the same equivalence set: i.e. [X = Y and X = 500] => [Y = 500] (3) it prunes branches that have unsatisfiable filters: i.e. [X = 5 AND X > 6] => FALSE, prune branch

Member Function Documentation

◆ IsDenseRange()

static bool duckdb::FilterCombiner::IsDenseRange ( vector< Value > &  in_list)
static

Returns whether or not a set of integral values is a dense range (i.e. 1, 2, 3, 4, 5) If this returns true - this sorts "in_list" as a side-effect


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