mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends
m::DataSource Struct Referenceabstract

A DataSource in a QueryGraph. More...

#include <QueryGraph.hpp>

Inheritance diagram for m::DataSource:
[legend]
Collaboration diagram for m::DataSource:
[legend]

Public Member Functions

virtual ~DataSource ()
 
std::size_t id () const
 Returns the id of this DataSource.
 
const ThreadSafePooledOptionalStringalias () const
 Returns the alias of this DataSource.
 
virtual ThreadSafePooledOptionalString name () const =0
 Returns the name of this DataSource.
 
const cnf::CNFfilter () const
 Returns the filter of this DataSource.
 
void update_filter (cnf::CNF filter)
 Adds filter to the current filter of this DataSource by logical conjunction.
 
void add_join (Join &join)
 Adds join to the set of Joins of this DataSource.
 
const auto & joins () const
 Returns a reference to the Joins using this DataSource.
 
virtual bool is_correlated () const =0
 Returns true iff the data source is correlated.
 
bool operator== (const DataSource &other) const
 
bool operator!= (const DataSource &other) const
 

Protected Member Functions

 DataSource (std::size_t id, ThreadSafePooledOptionalString alias)
 

Private Member Functions

void remove_join (Join &join)
 

Private Attributes

cnf::CNF filter_
 filter condition on this data source
 
std::vector< std::reference_wrapper< Join > > joins_
 joins with this data source
 
ThreadSafePooledOptionalString alias_
 alias of this data source, may not have a value if this data source has no alias
 
std::size_t id_
 unique identifier of this data source within its query graph
 
bool decorrelated_ = true
 indicates whether this source is already decorrelated
 

Friends

struct QueryGraph
 
struct GraphBuilder
 
struct Decorrelation
 

Detailed Description

A DataSource in a QueryGraph.

Represents something that can be evaluated to a sequence of tuples, optionally filtered by a filter condition. A DataSource can be joined with one or more other DataSources by a Join.

Definition at line 32 of file QueryGraph.hpp.

Constructor & Destructor Documentation

◆ DataSource()

m::DataSource::DataSource ( std::size_t  id,
ThreadSafePooledOptionalString  alias 
)
inlineprotected

Definition at line 47 of file QueryGraph.hpp.

References and().

◆ ~DataSource()

virtual m::DataSource::~DataSource ( )
inlinevirtual

Definition at line 53 of file QueryGraph.hpp.

Member Function Documentation

◆ add_join()

void m::DataSource::add_join ( Join join)
inline

Adds join to the set of Joins of this DataSource.

Definition at line 67 of file QueryGraph.hpp.

◆ alias()

const ThreadSafePooledOptionalString & m::DataSource::alias ( ) const
inline

Returns the alias of this DataSource.

May not have a value.

Definition at line 58 of file QueryGraph.hpp.

◆ filter()

const cnf::CNF & m::DataSource::filter ( ) const
inline

Returns the filter of this DataSource.

May be empty.

Definition at line 63 of file QueryGraph.hpp.

◆ id()

std::size_t m::DataSource::id ( ) const
inline

Returns the id of this DataSource.

Definition at line 56 of file QueryGraph.hpp.

◆ is_correlated()

virtual bool m::DataSource::is_correlated ( ) const
pure virtual

Returns true iff the data source is correlated.

Implemented in m::BaseTable, and m::Query.

◆ joins()

const auto & m::DataSource::joins ( ) const
inline

Returns a reference to the Joins using this DataSource.

Definition at line 69 of file QueryGraph.hpp.

◆ name()

virtual ThreadSafePooledOptionalString m::DataSource::name ( ) const
pure virtual

Returns the name of this DataSource.

Either the same as alias(), if an alias is given, otherwise the name of the referenced Table. Returned value might be empty for anonymous nested queries (e.g. in a WHERE clause).

Implemented in m::BaseTable, and m::Query.

Referenced by emplace_back_unique().

◆ operator!=()

bool m::DataSource::operator!= ( const DataSource other) const
inline

Definition at line 84 of file QueryGraph.hpp.

◆ operator==()

bool m::DataSource::operator== ( const DataSource other) const
inline

Definition at line 83 of file QueryGraph.hpp.

References id_.

◆ remove_join()

void m::DataSource::remove_join ( Join join)
inlineprivate

Definition at line 75 of file QueryGraph.hpp.

◆ update_filter()

void m::DataSource::update_filter ( cnf::CNF  filter)
inline

Adds filter to the current filter of this DataSource by logical conjunction.

Definition at line 65 of file QueryGraph.hpp.

References and().

Referenced by m::QueryGraph::add_custom_filter().

Friends And Related Function Documentation

◆ Decorrelation

friend struct Decorrelation
friend

Definition at line 36 of file QueryGraph.hpp.

◆ GraphBuilder

friend struct GraphBuilder
friend

Definition at line 35 of file QueryGraph.hpp.

◆ QueryGraph

friend struct QueryGraph
friend

Definition at line 34 of file QueryGraph.hpp.

Field Documentation

◆ alias_

ThreadSafePooledOptionalString m::DataSource::alias_
private

alias of this data source, may not have a value if this data source has no alias

Definition at line 41 of file QueryGraph.hpp.

◆ decorrelated_

bool m::DataSource::decorrelated_ = true
private

indicates whether this source is already decorrelated

Definition at line 44 of file QueryGraph.hpp.

◆ filter_

cnf::CNF m::DataSource::filter_
private

filter condition on this data source

Definition at line 39 of file QueryGraph.hpp.

◆ id_

std::size_t m::DataSource::id_
private

unique identifier of this data source within its query graph

Definition at line 42 of file QueryGraph.hpp.

Referenced by operator==().

◆ joins_

std::vector<std::reference_wrapper<Join> > m::DataSource::joins_
private

joins with this data source

Definition at line 40 of file QueryGraph.hpp.


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