OoOJoin  0.0.1
The next generation of out-of-order join operator
JoinAlgoTable.h
1 
5 //
6 // Created by tony on 11/03/22.
7 //
8 
9 #ifndef _JOINALGO_JOINALGOTABLE_H_
10 #define _JOINALGO_JOINALGOTABLE_H_
13 #include <JoinAlgos/NPJ/NPJ.h>
14 #include <map>
18 namespace OoOJoin {
26  protected:
27  std::vector<AbstractJoinAlgoPtr> algos;
28  std::map<std::string, AbstractJoinAlgoPtr> algoMap;
29  public:
30  JoinAlgoTable();
31  ~JoinAlgoTable() {
32 
33  }
39  AbstractJoinAlgoPtr findAlgo(size_t idx) {
40  if (idx < algos.size()) {
41  return algos[idx];
42  }
43  return algos[0];
44  }
50  AbstractJoinAlgoPtr findAlgo(std::string name) {
51  /*size_t maxIdx = algos.size();
52  for (size_t i = 0; i < maxIdx; i++) {
53  if (algos[i]->getAlgoName() == name) {
54  return algos[i];
55  }
56  }*/
57  if (algoMap.count(name)) {
58  return algoMap[name];
59  }
60  return algos[0];
61  }
67  size_t registerNewAlgo(AbstractJoinAlgoPtr anew) {
68  algos.push_back(anew);
69  return algos.size() - 1;
70  }
71 };
76 typedef std::shared_ptr<JoinAlgoTable> JoinAlgoTablePtr;
81 #define newJoinAlgoTable std::make_shared<JoinAlgoTable>
87 typedef enum {
105 }
106 #endif //ALIANCEDB_INCLUDE_JOINALGO_JOINALGOTABLE_H_
The table contains all supported algos.
Definition: JoinAlgoTable.h:25
size_t registerNewAlgo(AbstractJoinAlgoPtr anew)
To register a new algorithm.
Definition: JoinAlgoTable.h:67
AbstractJoinAlgoPtr findAlgo(std::string name)
find a algorithm in the table according to its index
Definition: JoinAlgoTable.h:50
AbstractJoinAlgoPtr findAlgo(size_t idx)
find a algorithm in the table according to its index
Definition: JoinAlgoTable.h:39
join_algo_index_t
The system default index for join algorithms.
Definition: JoinAlgoTable.h:87
Definition: OperatorTable.cpp:7
std::shared_ptr< JoinAlgoTable > JoinAlgoTablePtr
The class to describe a shared pointer to JoinAlgoTable.
Definition: JoinAlgoTable.h:76
@ JOINALGO_NESTEDLOOP
Definition: JoinAlgoTable.h:95
@ JOINALGO_NPJ_SINGLE
Definition: JoinAlgoTable.h:103
@ JOINALGO_NULL
Definition: JoinAlgoTable.h:91
@ JOINALGO_NPJ
Definition: JoinAlgoTable.h:99