MySQL 9.1.0
Source Code Documentation
GraphSimplifier Class Reference

#include <graph_simplification.h>

Classes

struct  CompareByBenefit
 
struct  EdgeCardinalities
 
struct  MarkNeighborCache
 
struct  NeighborCache
 
struct  ProposedSimplificationStep
 
struct  SimplificationStep
 

Public Types

enum  SimplificationResult { NO_SIMPLIFICATION_POSSIBLE = 0 , APPLIED_SIMPLIFICATION , APPLIED_NOOP , APPLIED_REDO_STEP }
 

Public Member Functions

 GraphSimplifier (THD *thd, JoinHypergraph *graph)
 
SimplificationResult DoSimplificationStep ()
 
void UndoSimplificationStep ()
 
int num_steps_done () const
 
int num_steps_undone () const
 

Private Member Functions

void UpdatePQ (size_t edge_idx)
 
void RecalculateNeighbors (size_t edge1_idx, size_t begin, size_t end)
 
ALWAYS_INLINE bool EdgesAreNeighboring (size_t edge1_idx, size_t edge2_idx, ProposedSimplificationStep *step)
 
SimplificationStep ConcretizeSimplificationStep (GraphSimplifier::ProposedSimplificationStep step)
 

Private Attributes

THDm_thd
 
Mem_root_array< SimplificationStepm_done_steps
 
Mem_root_array< SimplificationStepm_undone_steps
 
Bounds_checked_array< EdgeCardinalitiesm_edge_cardinalities
 
JoinHypergraphm_graph
 
OnlineCycleFinder m_cycles
 
Bounds_checked_array< NeighborCachem_cache
 
Priority_queue< NeighborCache *, std::vector< NeighborCache *, Mem_root_allocator< NeighborCache * > >, CompareByBenefit, MarkNeighborCachem_pq
 

Member Enumeration Documentation

◆ SimplificationResult

Enumerator
NO_SIMPLIFICATION_POSSIBLE 
APPLIED_SIMPLIFICATION 
APPLIED_NOOP 
APPLIED_REDO_STEP 

Constructor & Destructor Documentation

◆ GraphSimplifier()

GraphSimplifier::GraphSimplifier ( THD thd,
JoinHypergraph graph 
)

Member Function Documentation

◆ ConcretizeSimplificationStep()

GraphSimplifier::SimplificationStep GraphSimplifier::ConcretizeSimplificationStep ( GraphSimplifier::ProposedSimplificationStep  step)
private

◆ DoSimplificationStep()

GraphSimplifier::SimplificationResult GraphSimplifier::DoSimplificationStep ( )

◆ EdgesAreNeighboring()

bool GraphSimplifier::EdgesAreNeighboring ( size_t  edge1_idx,
size_t  edge2_idx,
GraphSimplifier::ProposedSimplificationStep step 
)
private

◆ num_steps_done()

int GraphSimplifier::num_steps_done ( ) const
inline

◆ num_steps_undone()

int GraphSimplifier::num_steps_undone ( ) const
inline

◆ RecalculateNeighbors()

void GraphSimplifier::RecalculateNeighbors ( size_t  edge1_idx,
size_t  begin,
size_t  end 
)
private

◆ UndoSimplificationStep()

void GraphSimplifier::UndoSimplificationStep ( )

◆ UpdatePQ()

void GraphSimplifier::UpdatePQ ( size_t  edge_idx)
private

Member Data Documentation

◆ m_cache

Bounds_checked_array<NeighborCache> GraphSimplifier::m_cache
private

◆ m_cycles

OnlineCycleFinder GraphSimplifier::m_cycles
private

◆ m_done_steps

Mem_root_array<SimplificationStep> GraphSimplifier::m_done_steps
private

◆ m_edge_cardinalities

Bounds_checked_array<EdgeCardinalities> GraphSimplifier::m_edge_cardinalities
private

◆ m_graph

JoinHypergraph* GraphSimplifier::m_graph
private

◆ m_pq

◆ m_thd

THD* GraphSimplifier::m_thd
private

◆ m_undone_steps

Mem_root_array<SimplificationStep> GraphSimplifier::m_undone_steps
private

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