AllianceDB  0.0.1
AllianceDB is an open-source suite, including benchmarks and libs for evaluating and improving stream operation algorithms on modern hardwares.
JoinAlgoTable.h
1 
5 //
6 // Created by tony on 11/03/22.
7 //
8 
9 #ifndef _JOINALGO_JOINALGOTABLE_H_
10 #define _JOINALGO_JOINALGOTABLE_H_
12 namespace INTELLI {
20  protected:
21  vector<AbstractJoinAlgoPtr> algos;
22  public:
23  JoinAlgoTable();
24  ~JoinAlgoTable() {
25 
26  }
32  AbstractJoinAlgoPtr findAlgo(size_t idx) {
33  if (idx < algos.size()) {
34  return algos[idx];
35  }
36  return algos[0];
37  }
43  AbstractJoinAlgoPtr findAlgo(string name) {
44  size_t maxIdx = algos.size();
45  for (size_t i = 0; i < maxIdx; i++) {
46  if (algos[i]->getAlgoName() == name) {
47  return algos[i];
48  }
49  }
50  return algos[0];
51  }
57  size_t registerNewAlgo(AbstractJoinAlgoPtr anew) {
58  algos.push_back(anew);
59  return algos.size() - 1;
60  }
61 };
62 
63 typedef std::shared_ptr<JoinAlgoTable> JoinAlgoTablePtr;
64 #define newJoinAlgoTable() make_shared<JoinAlgoTable>()
70 typedef enum {
88 }
89 #endif //ALIANCEDB_INCLUDE_JOINALGO_JOINALGOTABLE_H_
The table contains all supported algos.
Definition: JoinAlgoTable.h:19
AbstractJoinAlgoPtr findAlgo(string name)
find a algorithm in the table according to its index
Definition: JoinAlgoTable.h:43
size_t registerNewAlgo(AbstractJoinAlgoPtr anew)
To register a new algorithm.
Definition: JoinAlgoTable.h:57
AbstractJoinAlgoPtr findAlgo(size_t idx)
find a algorithm in the table according to its index
Definition: JoinAlgoTable.h:32
join_algo_index_t
The system default index for join algorithms.
Definition: JoinAlgoTable.h:70
Definition: DatasetTool.h:10
@ JOINALGO_NESTEDLOOP
Definition: JoinAlgoTable.h:78
@ JOINALGO_NULL
Definition: JoinAlgoTable.h:74
@ JOINALGO_NPJ
Definition: JoinAlgoTable.h:82
@ JOINALGO_NPJ_SINGLE
Definition: JoinAlgoTable.h:86