mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes
m::PhysicalPlanTableEntry< Actual, ChildIt > Struct Template Reference

Interface for a single physical plan table entry. More...

#include <PhysicalPlanTable.hpp>

Inheritance diagram for m::PhysicalPlanTableEntry< Actual, ChildIt >:
[legend]
Collaboration diagram for m::PhysicalPlanTableEntry< Actual, ChildIt >:
[legend]

Public Types

template<bool C>
using child_iterator_type = ChildIt< C >
 
using const_child_iterator = child_iterator_type< true >
 
using cost_type = double
 
using actual_type = Actual
 

Public Member Functions

template<typename It >
requires requires { typename detail::the_condition_entry_iterator<It, true, Actual>; }
 PhysicalPlanTableEntry (std::unique_ptr< MatchBase > &&match, const std::vector< It > &children, cost_type cost)
 
 PhysicalPlanTableEntry ()=default
 
 PhysicalPlanTableEntry (const PhysicalPlanTableEntry &)=delete
 
 PhysicalPlanTableEntry (PhysicalPlanTableEntry &&other)
 
PhysicalPlanTableEntryoperator= (PhysicalPlanTableEntry other)
 
const MatchBasematch () const
 
unsharable_shared_ptr< MatchBaseshare_match () const
 Shares the found match.
 
unsharable_shared_ptr< MatchBaseextract_match ()
 Extracts the found match by moving it out of this.
 
cost_type cost () const
 
const_child_iterator begin_children () const
 
const_child_iterator end_children () const
 
const_child_iterator cbegin_children () const
 
const_child_iterator cend_children () const
 
range< const_child_iteratorchildren () const
 
actual_typeactual ()
 
const actual_typeactual () const
 

Private Attributes

friend CRTPBaseType< actual_type, It, TParams... >
 

Detailed Description

template<typename Actual, template< bool > typename ChildIt>
requires requires { typename detail::the_condition_entry_templated_iterator<ChildIt, true, Actual>; }
struct m::PhysicalPlanTableEntry< Actual, ChildIt >

Interface for a single physical plan table entry.

Makes use of CRTP to create static polymorphism to the concrete implementation

Template Parameters
Actual.
ChildItmust be an iterator over the child nodes of the physical plan represented by this entry, i.e. their outgoing ConditionSet together with the respective physical plan table entries for their subplans.

Definition at line 79 of file PhysicalPlanTable.hpp.

Member Typedef Documentation

◆ actual_type

using m::crtp_boolean_templated< Actual , PhysicalPlanTableEntry , ChildIt , TParams >::actual_type = Actual
inherited

Definition at line 81 of file crtp.hpp.

◆ child_iterator_type

template<typename Actual , template< bool > typename ChildIt>
template<bool C>
using m::PhysicalPlanTableEntry< Actual, ChildIt >::child_iterator_type = ChildIt<C>

Definition at line 82 of file PhysicalPlanTable.hpp.

◆ const_child_iterator

template<typename Actual , template< bool > typename ChildIt>
using m::PhysicalPlanTableEntry< Actual, ChildIt >::const_child_iterator = child_iterator_type<true>

Definition at line 83 of file PhysicalPlanTable.hpp.

◆ cost_type

template<typename Actual , template< bool > typename ChildIt>
using m::PhysicalPlanTableEntry< Actual, ChildIt >::cost_type = double

Definition at line 84 of file PhysicalPlanTable.hpp.

Constructor & Destructor Documentation

◆ PhysicalPlanTableEntry() [1/4]

template<typename Actual , template< bool > typename ChildIt>
template<typename It >
requires requires { typename detail::the_condition_entry_iterator<It, true, Actual>; }
m::PhysicalPlanTableEntry< Actual, ChildIt >::PhysicalPlanTableEntry ( std::unique_ptr< MatchBase > &&  match,
const std::vector< It > &  children,
cost_type  cost 
)
inline

Definition at line 88 of file PhysicalPlanTable.hpp.

◆ PhysicalPlanTableEntry() [2/4]

template<typename Actual , template< bool > typename ChildIt>
m::PhysicalPlanTableEntry< Actual, ChildIt >::PhysicalPlanTableEntry ( )
default

◆ PhysicalPlanTableEntry() [3/4]

template<typename Actual , template< bool > typename ChildIt>
m::PhysicalPlanTableEntry< Actual, ChildIt >::PhysicalPlanTableEntry ( const PhysicalPlanTableEntry< Actual, ChildIt > &  )
delete

◆ PhysicalPlanTableEntry() [4/4]

template<typename Actual , template< bool > typename ChildIt>
m::PhysicalPlanTableEntry< Actual, ChildIt >::PhysicalPlanTableEntry ( PhysicalPlanTableEntry< Actual, ChildIt > &&  other)
inline

Definition at line 94 of file PhysicalPlanTable.hpp.

Member Function Documentation

◆ actual() [1/2]

actual_type & m::crtp_boolean_templated< Actual , PhysicalPlanTableEntry , ChildIt , TParams >::actual ( )
inlineinherited

Definition at line 82 of file crtp.hpp.

◆ actual() [2/2]

const actual_type & m::crtp_boolean_templated< Actual , PhysicalPlanTableEntry , ChildIt , TParams >::actual ( ) const
inlineinherited

Definition at line 83 of file crtp.hpp.

◆ begin_children()

template<typename Actual , template< bool > typename ChildIt>
const_child_iterator m::PhysicalPlanTableEntry< Actual, ChildIt >::begin_children ( ) const
inline

◆ cbegin_children()

template<typename Actual , template< bool > typename ChildIt>
const_child_iterator m::PhysicalPlanTableEntry< Actual, ChildIt >::cbegin_children ( ) const
inline

◆ cend_children()

template<typename Actual , template< bool > typename ChildIt>
const_child_iterator m::PhysicalPlanTableEntry< Actual, ChildIt >::cend_children ( ) const
inline

◆ children()

template<typename Actual , template< bool > typename ChildIt>
range< const_child_iterator > m::PhysicalPlanTableEntry< Actual, ChildIt >::children ( ) const
inline

◆ cost()

template<typename Actual , template< bool > typename ChildIt>
cost_type m::PhysicalPlanTableEntry< Actual, ChildIt >::cost ( ) const
inline

◆ end_children()

template<typename Actual , template< bool > typename ChildIt>
const_child_iterator m::PhysicalPlanTableEntry< Actual, ChildIt >::end_children ( ) const
inline

◆ extract_match()

template<typename Actual , template< bool > typename ChildIt>
unsharable_shared_ptr< MatchBase > m::PhysicalPlanTableEntry< Actual, ChildIt >::extract_match ( )
inline

Extracts the found match by moving it out of this.

Definition at line 105 of file PhysicalPlanTable.hpp.

References m::crtp_boolean_templated< Actual, PhysicalPlanTableEntry, ChildIt >::actual().

◆ match()

template<typename Actual , template< bool > typename ChildIt>
const MatchBase & m::PhysicalPlanTableEntry< Actual, ChildIt >::match ( ) const
inline

◆ operator=()

template<typename Actual , template< bool > typename ChildIt>
PhysicalPlanTableEntry & m::PhysicalPlanTableEntry< Actual, ChildIt >::operator= ( PhysicalPlanTableEntry< Actual, ChildIt >  other)
inline

◆ share_match()

template<typename Actual , template< bool > typename ChildIt>
unsharable_shared_ptr< MatchBase > m::PhysicalPlanTableEntry< Actual, ChildIt >::share_match ( ) const
inline

Shares the found match.

Only used by PhysicalOptimizerImpl to create new matches with this match as child.

Definition at line 103 of file PhysicalPlanTable.hpp.

References m::crtp_boolean_templated< Actual, PhysicalPlanTableEntry, ChildIt >::actual().

Field Documentation

◆ CRTPBaseType< actual_type, It, TParams... >

friend m::crtp_boolean_templated< Actual , PhysicalPlanTableEntry , ChildIt , TParams >::PhysicalPlanTableEntry < actual_type, ChildIt , TParams... >
privateinherited

Definition at line 87 of file crtp.hpp.


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