23#ifndef SQL_JOIN_OPTIMIZER_HYPERGRAPH_H_
24#define SQL_JOIN_OPTIMIZER_HYPERGRAPH_H_ 1
70 static constexpr int Size =
71 sizeof(std::vector<unsigned>) * 2 +
sizeof(
NodeMap);
74static_assert(
sizeof(
Node) >= 64);
Definition: hypergraph.cc:30
uint64_t NodeMap
Since our graphs can never have more than 61 tables, node sets and edge lists are implemented using 6...
Definition: node_map.h:39
Definition: hypergraph.h:76
NodeMap left
Definition: hypergraph.h:81
NodeMap right
Definition: hypergraph.h:82
Definition: hypergraph.h:85
std::vector< Hyperedge > edges
Definition: hypergraph.h:88
void AddNode()
Definition: hypergraph.cc:32
std::vector< Node > nodes
Definition: hypergraph.h:87
void AddEdge(NodeMap left, NodeMap right)
Definition: hypergraph.cc:34
void AttachEdgeToNodes(size_t left_first_idx, size_t right_first_idx, NodeMap left, NodeMap right)
Definition: hypergraph.cc:118
void ModifyEdge(unsigned edge_idx, NodeMap new_left, NodeMap new_right)
Definition: hypergraph.cc:58
Definition: hypergraph.h:47
char padding[std::max< int >(1, 64 - Size)]
Definition: hypergraph.h:72
std::vector< unsigned > complex_edges
Definition: hypergraph.h:61
static constexpr int Size
Definition: hypergraph.h:70
NodeMap simple_neighborhood
Definition: hypergraph.h:64
std::vector< unsigned > simple_edges
Definition: hypergraph.h:61