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

A Query in a QueryGraph is a DataSource that represents a nested query. More...

#include <QueryGraph.hpp>

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

Public Member Functions

QueryGraphquery_graph () const
 Returns a reference to the internal QueryGraph.
 
ThreadSafePooledOptionalString name () const override
 Returns the name of this DataSource.
 
bool is_correlated () const override
 Returns true iff the data source is correlated.
 
std::size_t id () const
 Returns the id of this DataSource.
 
const ThreadSafePooledOptionalStringalias () const
 Returns the alias 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.
 
bool operator== (const DataSource &other) const
 
bool operator!= (const DataSource &other) const
 

Private Member Functions

 Query (std::size_t id, ThreadSafePooledOptionalString alias, std::unique_ptr< QueryGraph > query_graph)
 
void remove_join (Join &join)
 

Private Attributes

std::unique_ptr< QueryGraphquery_graph_
 query graph of the sub-query
 
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
 

Detailed Description

A Query in a QueryGraph is a DataSource that represents a nested query.

As such, a Query contains a QueryGraph. A Query must be evaluated to acquire its sequence of tuples.

Definition at line 115 of file QueryGraph.hpp.

Constructor & Destructor Documentation

◆ Query()

m::Query::Query ( std::size_t  id,
ThreadSafePooledOptionalString  alias,
std::unique_ptr< QueryGraph query_graph 
)
inlineprivate

Definition at line 123 of file QueryGraph.hpp.

Member Function Documentation

◆ add_join()

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

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
inlineinherited

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
inlineinherited

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
inlineinherited

Returns the id of this DataSource.

Definition at line 56 of file QueryGraph.hpp.

◆ is_correlated()

bool Query::is_correlated ( ) const
overridevirtual

Returns true iff the data source is correlated.

Implements m::DataSource.

Definition at line 21 of file QueryGraph.cpp.

References query_graph_.

◆ joins()

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

Returns a reference to the Joins using this DataSource.

Definition at line 69 of file QueryGraph.hpp.

◆ name()

ThreadSafePooledOptionalString m::Query::name ( ) const
inlineoverridevirtual

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).

Implements m::DataSource.

Definition at line 131 of file QueryGraph.hpp.

◆ operator!=()

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

Definition at line 84 of file QueryGraph.hpp.

◆ operator==()

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

Definition at line 83 of file QueryGraph.hpp.

References m::DataSource::id_.

◆ query_graph()

QueryGraph & m::Query::query_graph ( ) const
inline

Returns a reference to the internal QueryGraph.

Definition at line 129 of file QueryGraph.hpp.

◆ remove_join()

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

Definition at line 75 of file QueryGraph.hpp.

◆ update_filter()

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

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

◆ QueryGraph

friend struct QueryGraph
friend

Definition at line 117 of file QueryGraph.hpp.

Field Documentation

◆ alias_

ThreadSafePooledOptionalString m::DataSource::alias_
privateinherited

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
privateinherited

indicates whether this source is already decorrelated

Definition at line 44 of file QueryGraph.hpp.

◆ filter_

cnf::CNF m::DataSource::filter_
privateinherited

filter condition on this data source

Definition at line 39 of file QueryGraph.hpp.

◆ id_

std::size_t m::DataSource::id_
privateinherited

unique identifier of this data source within its query graph

Definition at line 42 of file QueryGraph.hpp.

Referenced by m::DataSource::operator==().

◆ joins_

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

joins with this data source

Definition at line 40 of file QueryGraph.hpp.

◆ query_graph_

std::unique_ptr<QueryGraph> m::Query::query_graph_
private

query graph of the sub-query

Definition at line 120 of file QueryGraph.hpp.

Referenced by is_correlated().


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