コード例 #1
0
ファイル: HashJoin.cpp プロジェクト: kaihowl/hyrise
    void BenchmarkSetUp() {
        hb = new HashBuild();
        hjp = new HashJoinProbe;
        hjp->setEvent("NO_PAPI");
        hb->setKey("join");
        hb->setEvent("NO_PAPI");
        sm = StorageManager::getInstance();

        t1 = sm->getTable("stock");
        t2 = sm->getTable("order_line");

        hb->addInput(t1);
        hb->addField(0);
        hjp->addInput(t2);
        hjp->addField(4);

    }
コード例 #2
0
ファイル: hash_join.cpp プロジェクト: HanumathRao/hyrise
storage::c_atable_ptr_t join(const tbl_ptr& left,
                             const tbl_ptr& right,
                             const std::vector<size_t>& fields_left,
                             const std::vector<size_t>& fields_right) {
  HashBuild hashBuild;
  hashBuild.addInput(left);
  hashBuild.setKey("join");
  for (auto& field_left : fields_left)
    hashBuild.addField(field_left);
  auto hashes = hashBuild.execute()->getResultHashTable();

  hyrise::access::HashJoinProbe hjp;
  hjp.addInput(right);
  for (auto& field_right : fields_right)
    hjp.addField(field_right);
  hjp.addInput(hashes);

  return hjp.execute()->getResultTable();
}
コード例 #3
0
ファイル: GroupByScan.cpp プロジェクト: came/hyrise
BENCHMARK_F(GroupByScanBase, group_by_scan_multiple_fieds_mat) {
  GroupByScan gs2;
  gs2.setEvent("NO_PAPI");
  gs2.addField(0);
  gs2.addField(1);

  gs2.addInput(t);

  HashBuild hs;
  hs.setEvent("NO_PAPI");
  hs.setKey("groupby");
  hs.addInput(t);

  hs.addField(0);
  hs.addField(1);

  auto group_map = hs.execute()->getResultHashTable();

  gs2.addInput(group_map);

  auto result = gs2.execute()->getResultTable();

  MaterializingScan ms(false);
  ms.setEvent("NO_PAPI");
  ms.addInput(result);

  ms.execute()->getResultTable();
}
コード例 #4
0
ファイル: hash_build.cpp プロジェクト: came/hyrise
TEST_F(HashBuildTest, check_equality) {
  std::shared_ptr<AbstractTable> t = Loader::shortcuts::load("test/10_30_group.tbl");

  HashBuild hb;
  hb.addInput(t);
  hb.addField(1);
  hb.setKey("groupby");
  hb.execute();
  auto hash = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb.getResultHashTable());

  auto t1 = storage::TableRangeView::create(t, 0, 4);
  auto t2 = storage::TableRangeView::create(t, 5, 9);

  HashBuild hb1;
  hb1.addInput(t1);
  hb1.addField(1);
  hb1.setKey("groupby");
  hb1.execute();
  auto hash1 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb1.getResultHashTable());

  HashBuild hb2;
  hb2.addInput(t2);
  hb2.addField(1);
  hb2.setKey("groupby");
  hb2.execute();
  auto hash2 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb2.getResultHashTable());

  ASSERT_TRUE(check_equality(hash, hash));
  ASSERT_FALSE(check_equality(hash1, hash2));
}
コード例 #5
0
ファイル: hash_build.cpp プロジェクト: came/hyrise
TEST_F(HashBuildTest, merge_one_table_test) {
  std::shared_ptr<AbstractTable> t = Loader::shortcuts::load("test/10_30_group.tbl");

  HashBuild hb;
  hb.addInput(t);
  hb.addField(1);
  hb.setKey("groupby");
  hb.execute();
  auto hash1 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb.getResultHashTable());

  MergeHashTables mht;
  mht.addInput(hash1);
  mht.setKey("groupby");
  mht.execute();
  auto hash2 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(mht.getResultHashTable());


  ASSERT_TRUE(check_equality(hash1, hash2));
}
コード例 #6
0
ファイル: GroupByScan.cpp プロジェクト: came/hyrise
BENCHMARK_F(GroupByScanBase, group_by_scan_multiple_fields) {
  GroupByScan gs2;
  gs2.setEvent("NO_PAPI");
  gs2.addField(0);
  gs2.addField(1);

  gs2.addInput(t);

  HashBuild hs;
  hs.setEvent("NO_PAPI");
  hs.setKey("groupby");
  hs.addInput(t);

  hs.addField(0);
  hs.addField(1);

  auto group_map = hs.execute()->getResultHashTable();

  gs2.addInput(group_map);

  gs2.execute()->getResultTable();
}
コード例 #7
0
ファイル: hash_build.cpp プロジェクト: came/hyrise
TEST_F(HashBuildTest, merge_two_tables_test) {
  // reference hash Table
  std::shared_ptr<AbstractTable> t = Loader::shortcuts::load("test/10_30_group.tbl");
  HashBuild hb;
  hb.addInput(t);
  hb.addField(1);
  hb.setKey("groupby");
  hb.execute();
  auto hash = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb.getResultHashTable());

  //test to merge two tables
  auto t1 = storage::TableRangeView::create(t, 0, 5);
  auto t2 = storage::TableRangeView::create(t, 5, 10);

  HashBuild hb1;
  hb1.addInput(t1);
  hb1.addField(1);
  hb1.setKey("groupby");
  hb1.execute();
  auto hash1 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb1.getResultHashTable());

  HashBuild hb2;
  hb2.addInput(t2);
  hb2.addField(1);
  hb2.setKey("groupby");
  hb2.execute();
  auto hash2 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(hb2.getResultHashTable());

  MergeHashTables mht;
  mht.addInput(hash1);
  mht.addInput(hash2);
  mht.setKey("groupby");
  mht.execute();
  auto hash3 = std::dynamic_pointer_cast<const SingleAggregateHashTable >(mht.getResultHashTable());

  ASSERT_EQ(hash->size(), hash3->size());
  ASSERT_EQ(hash->numKeys(), hash3->numKeys());
}