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::PhysicalOperator Class Reference

PhysicalOperator is the base class of the physical operators present in the execution plan. More...

#include <duckdb.hpp>

Inheritance diagram for duckdb::PhysicalOperator:
Collaboration diagram for duckdb::PhysicalOperator:

Public Member Functions

 PhysicalOperator (PhysicalPlan &physical_plan, PhysicalOperatorType type, vector< LogicalType > types, idx_t estimated_cardinality)
 
 PhysicalOperator (const PhysicalOperator &other)=delete
 Deleted copy constructors.
 
PhysicalOperatoroperator= (const PhysicalOperator &)=delete
 
virtual string GetName () const
 
virtual InsertionOrderPreservingMap< string > ParamsToString () const
 
virtual string ToString (ExplainFormat format=ExplainFormat::DEFAULT) const
 
void Print () const
 
virtual vector< const_reference< PhysicalOperator > > GetChildren () const
 
const vector< LogicalType > & GetTypes () const
 Return a vector of the types that will be returned by this operator.
 
virtual bool Equals (const PhysicalOperator &other) const
 
idx_t EstimatedThreadCount () const
 Functions to help decide how to set up pipeline dependencies.
 
bool CanSaturateThreads (ClientContext &context) const
 
virtual void Verify ()
 
virtual unique_ptr< OperatorStateGetOperatorState (ExecutionContext &context) const
 
virtual unique_ptr< GlobalOperatorStateGetGlobalOperatorState (ClientContext &context) const
 
virtual OperatorResultType Execute (ExecutionContext &context, DataChunk &input, DataChunk &chunk, GlobalOperatorState &gstate, OperatorState &state) const
 
virtual OperatorFinalizeResultType FinalExecute (ExecutionContext &context, DataChunk &chunk, GlobalOperatorState &gstate, OperatorState &state) const
 
virtual OperatorFinalResultType OperatorFinalize (Pipeline &pipeline, Event &event, ClientContext &context, OperatorFinalizeInput &input) const
 
virtual bool ParallelOperator () const
 
virtual bool RequiresFinalExecute () const
 
virtual bool RequiresOperatorFinalize () const
 
virtual OrderPreservationType OperatorOrder () const
 The influence the operator has on order (insertion order means no influence)
 
virtual unique_ptr< LocalSourceStateGetLocalSourceState (ExecutionContext &context, GlobalSourceState &gstate) const
 
virtual unique_ptr< GlobalSourceStateGetGlobalSourceState (ClientContext &context) const
 
SourceResultType GetData (ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const
 
virtual OperatorPartitionData GetPartitionData (ExecutionContext &context, DataChunk &chunk, GlobalSourceState &gstate, LocalSourceState &lstate, const OperatorPartitionInfo &partition_info) const
 
virtual bool IsSource () const
 
virtual bool ParallelSource () const
 
virtual bool SupportsPartitioning (const OperatorPartitionInfo &partition_info) const
 
virtual OrderPreservationType SourceOrder () const
 The type of order emitted by the operator (as a source)
 
virtual ProgressData GetProgress (ClientContext &context, GlobalSourceState &gstate) const
 Returns the current progress percentage, or a negative value if progress bars are not supported.
 
virtual ProgressData GetSinkProgress (ClientContext &context, GlobalSinkState &gstate, const ProgressData source_progress) const
 Returns the current progress percentage, or a negative value if progress bars are not supported.
 
virtual InsertionOrderPreservingMap< string > ExtraSourceParams (GlobalSourceState &gstate, LocalSourceState &lstate) const
 
virtual SinkResultType Sink (ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const
 
virtual SinkCombineResultType Combine (ExecutionContext &context, OperatorSinkCombineInput &input) const
 
virtual void PrepareFinalize (ClientContext &context, GlobalSinkState &sink_state) const
 
virtual SinkFinalizeType Finalize (Pipeline &pipeline, Event &event, ClientContext &context, OperatorSinkFinalizeInput &input) const
 
virtual SinkNextBatchType NextBatch (ExecutionContext &context, OperatorSinkNextBatchInput &input) const
 
virtual unique_ptr< LocalSinkStateGetLocalSinkState (ExecutionContext &context) const
 
virtual unique_ptr< GlobalSinkStateGetGlobalSinkState (ClientContext &context) const
 
virtual bool IsSink () const
 
virtual bool ParallelSink () const
 
virtual OperatorPartitionInfo RequiredPartitionInfo () const
 
virtual bool SinkOrderDependent () const
 
virtual vector< const_reference< PhysicalOperator > > GetSources () const
 
bool AllSourcesSupportBatchIndex () const
 
virtual void BuildPipelines (Pipeline &current, MetaPipeline &meta_pipeline)
 
template<class TARGET >
TARGETCast ()
 
template<class TARGET >
const TARGETCast () const
 

Static Public Member Functions

static void SetEstimatedCardinality (InsertionOrderPreservingMap< string > &result, idx_t estimated_cardinality)
 
static idx_t GetMaxThreadMemory (ClientContext &context)
 The maximum amount of memory the operator should use per thread.
 
static OperatorCachingMode SelectOperatorCachingMode (ExecutionContext &context)
 Whether operator caching is allowed in the current execution context.
 

Public Attributes

ArenaLinkedList< reference< PhysicalOperator > > children
 The child operators.
 
PhysicalOperatorType type
 The physical operator type.
 
vector< LogicalTypetypes
 The return types.
 
idx_t estimated_cardinality
 The estimated cardinality.
 
unique_ptr< GlobalSinkStatesink_state
 The global sink state.
 
unique_ptr< GlobalOperatorStateop_state
 The global operator state.
 
mutex lock
 Lock for (re)setting any of the operator states.
 

Static Public Attributes

static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::INVALID
 

Protected Member Functions

virtual SourceResultType GetDataInternal (ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const
 

Detailed Description

PhysicalOperator is the base class of the physical operators present in the execution plan.

Constructor & Destructor Documentation

◆ ~PhysicalOperator()

virtual duckdb::PhysicalOperator::~PhysicalOperator ( )
inlinevirtual
22140 {
22141 }

Member Function Documentation

◆ ParamsToString()

virtual InsertionOrderPreservingMap< string > duckdb::PhysicalOperator::ParamsToString ( ) const
inlinevirtual
22165 {
22166 return InsertionOrderPreservingMap<string>();
22167 }

◆ GetTypes()

const vector< LogicalType > & duckdb::PhysicalOperator::GetTypes ( ) const
inline

Return a vector of the types that will be returned by this operator.

22174 {
22175 return types;
22176 }
vector< LogicalType > types
The return types.
Definition duckdb.hpp:22152

◆ Equals()

virtual bool duckdb::PhysicalOperator::Equals ( const PhysicalOperator other) const
inlinevirtual
22178 {
22179 return false;
22180 }

◆ Execute()

virtual OperatorResultType duckdb::PhysicalOperator::Execute ( ExecutionContext context,
DataChunk input,
DataChunk chunk,
GlobalOperatorState gstate,
OperatorState state 
) const
virtual

◆ FinalExecute()

virtual OperatorFinalizeResultType duckdb::PhysicalOperator::FinalExecute ( ExecutionContext context,
DataChunk chunk,
GlobalOperatorState gstate,
OperatorState state 
) const
virtual

◆ ParallelOperator()

virtual bool duckdb::PhysicalOperator::ParallelOperator ( ) const
inlinevirtual
22199 {
22200 return false;
22201 }

◆ RequiresFinalExecute()

virtual bool duckdb::PhysicalOperator::RequiresFinalExecute ( ) const
inlinevirtual
22203 {
22204 return false;
22205 }

◆ RequiresOperatorFinalize()

virtual bool duckdb::PhysicalOperator::RequiresOperatorFinalize ( ) const
inlinevirtual
22207 {
22208 return false;
22209 }

◆ OperatorOrder()

virtual OrderPreservationType duckdb::PhysicalOperator::OperatorOrder ( ) const
inlinevirtual

The influence the operator has on order (insertion order means no influence)

22212 {
22213 return OrderPreservationType::INSERTION_ORDER;
22214 }

◆ IsSource()

virtual bool duckdb::PhysicalOperator::IsSource ( ) const
inlinevirtual
22233 {
22234 return false;
22235 }

◆ ParallelSource()

virtual bool duckdb::PhysicalOperator::ParallelSource ( ) const
inlinevirtual
22237 {
22238 return false;
22239 }

◆ SupportsPartitioning()

virtual bool duckdb::PhysicalOperator::SupportsPartitioning ( const OperatorPartitionInfo partition_info) const
inlinevirtual
22241 {
22242 if (partition_info.AnyRequired()) {
22243 return false;
22244 }
22245 return true;
22246 }

◆ SourceOrder()

virtual OrderPreservationType duckdb::PhysicalOperator::SourceOrder ( ) const
inlinevirtual

The type of order emitted by the operator (as a source)

22249 {
22250 return OrderPreservationType::INSERTION_ORDER;
22251 }

◆ GetSinkProgress()

virtual ProgressData duckdb::PhysicalOperator::GetSinkProgress ( ClientContext context,
GlobalSinkState gstate,
const ProgressData  source_progress 
) const
inlinevirtual

Returns the current progress percentage, or a negative value if progress bars are not supported.

22258 {
22259 return source_progress;
22260 }

◆ ExtraSourceParams()

virtual InsertionOrderPreservingMap< string > duckdb::PhysicalOperator::ExtraSourceParams ( GlobalSourceState gstate,
LocalSourceState lstate 
) const
inlinevirtual
22263 {
22264 return InsertionOrderPreservingMap<string>();
22265 }

◆ Sink()

virtual SinkResultType duckdb::PhysicalOperator::Sink ( ExecutionContext context,
DataChunk chunk,
OperatorSinkInput input 
) const
virtual

The sink method is called constantly with new input, as long as new input is available. Note that this method CAN be called in parallel, proper locking is needed when accessing dat a inside the GlobalSinkState.

Reimplemented in duckdb::PhysicalBatchCollector, and duckdb::PhysicalArrowCollector.

◆ Combine()

virtual SinkCombineResultType duckdb::PhysicalOperator::Combine ( ExecutionContext context,
OperatorSinkCombineInput input 
) const
virtual

The combine is called when a single thread has completed execution of its part of the pipeline, it is the final time that a specific LocalSinkState is accessible. This method can be called in parallel while other Sink() or Combine() calls are active on the same GlobalSinkState.

Reimplemented in duckdb::PhysicalBatchCollector, and duckdb::PhysicalArrowCollector.

◆ PrepareFinalize()

virtual void duckdb::PhysicalOperator::PrepareFinalize ( ClientContext context,
GlobalSinkState sink_state 
) const
virtual

(optional) function that will be called before Finalize For now, its only use is to to communicate memory usage in multi-join pipelines through TemporaryMemoryManager

◆ Finalize()

virtual SinkFinalizeType duckdb::PhysicalOperator::Finalize ( Pipeline pipeline,
Event event,
ClientContext context,
OperatorSinkFinalizeInput input 
) const
virtual

The finalize is called when ALL threads are finished execution. It is called only once per pipeline, and is entirely single threaded. If Finalize returns SinkResultType::Finished, the sink is marked as finished

Reimplemented in duckdb::PhysicalBatchCollector, duckdb::PhysicalArrowBatchCollector, and duckdb::PhysicalArrowCollector.

◆ NextBatch()

virtual SinkNextBatchType duckdb::PhysicalOperator::NextBatch ( ExecutionContext context,
OperatorSinkNextBatchInput input 
) const
virtual

For sinks with RequiresBatchIndex set to true, when a new batch starts being processed this method is called This allows flushing of the current batch (e.g. to disk)

◆ IsSink()

virtual bool duckdb::PhysicalOperator::IsSink ( ) const
inlinevirtual
22299 {
22300 return false;
22301 }

◆ ParallelSink()

virtual bool duckdb::PhysicalOperator::ParallelSink ( ) const
inlinevirtual
22303 {
22304 return false;
22305 }

◆ RequiredPartitionInfo()

virtual OperatorPartitionInfo duckdb::PhysicalOperator::RequiredPartitionInfo ( ) const
inlinevirtual
22307 {
22308 return OperatorPartitionInfo::NoPartitionInfo();
22309 }

◆ SinkOrderDependent()

virtual bool duckdb::PhysicalOperator::SinkOrderDependent ( ) const
inlinevirtual

Whether or not the sink operator depends on the order of the input chunks If this is set to true, we cannot do things like caching intermediate vectors

Reimplemented in duckdb::PhysicalArrowCollector.

22313 {
22314 return false;
22315 }

◆ Cast() [1/2]

template<class TARGET >
TARGET & duckdb::PhysicalOperator::Cast ( )
inline
22326 {
22327 if (TARGET::TYPE != PhysicalOperatorType::INVALID && type != TARGET::TYPE) {
22328 throw InternalException("Failed to cast physical operator to type - physical operator type mismatch");
22329 }
22330 return reinterpret_cast<TARGET &>(*this);
22331 }
PhysicalOperatorType type
The physical operator type.
Definition duckdb.hpp:22150

◆ Cast() [2/2]

template<class TARGET >
const TARGET & duckdb::PhysicalOperator::Cast ( ) const
inline
22334 {
22335 if (TARGET::TYPE != PhysicalOperatorType::INVALID && type != TARGET::TYPE) {
22336 throw InternalException("Failed to cast physical operator to type - physical operator type mismatch");
22337 }
22338 return reinterpret_cast<const TARGET &>(*this);
22339 }

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