You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by na...@apache.org on 2016/07/08 23:04:02 UTC

incubator-quickstep git commit: Add flags for configuring Bloom filter.

Repository: incubator-quickstep
Updated Branches:
  refs/heads/expt_bloom_filter 14f726e1d -> 4c5b736be


Add flags for configuring Bloom filter.


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/4c5b736b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/4c5b736b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/4c5b736b

Branch: refs/heads/expt_bloom_filter
Commit: 4c5b736bec8a7f88ee4e3a827f5c9782b6974004
Parents: 14f726e
Author: Navneet Potti <na...@gmail.com>
Authored: Fri Jul 8 18:00:24 2016 -0500
Committer: Navneet Potti <na...@gmail.com>
Committed: Fri Jul 8 18:00:24 2016 -0500

----------------------------------------------------------------------
 query_optimizer/ExecutionHeuristics.cpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/4c5b736b/query_optimizer/ExecutionHeuristics.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionHeuristics.cpp b/query_optimizer/ExecutionHeuristics.cpp
index 1f2163e..1d35e22 100644
--- a/query_optimizer/ExecutionHeuristics.cpp
+++ b/query_optimizer/ExecutionHeuristics.cpp
@@ -32,6 +32,13 @@
 namespace quickstep {
 namespace optimizer {
 
+static const std::size_t kNumBitsPerByte = 8;
+DEFINE_int32(bloom_num_bits_per_tuple, kNumBitsPerByte,
+    "Number of bits per tuple used to size the Bloom filter.");
+
+DEFINE_int32(bloom_num_hash_fns, 3,
+    "Number of hash functions used in the Bloom filter.");
+
 void ExecutionHeuristics::optimizeExecutionPlan(QueryPlan *query_plan,
                                                 serialization::QueryContext *query_context_proto) {
   // Currently this only optimizes left deep joins using bloom filters.
@@ -108,8 +115,9 @@ void ExecutionHeuristics::optimizeExecutionPlan(QueryPlan *query_plan,
 void ExecutionHeuristics::setBloomFilterProperties(serialization::BloomFilter *bloom_filter_proto,
                                                    const CatalogRelation *relation) {
   const std::size_t cardinality = relation->getStatistics().getNumTuples();
-  bloom_filter_proto->set_bloom_filter_size(cardinality);
-  bloom_filter_proto->set_number_of_hashes(3);
+  bloom_filter_proto->set_bloom_filter_size(
+      (FLAGS_bloom_num_bits_per_tuple * cardinality)/kNumBitsPerByte);
+  bloom_filter_proto->set_number_of_hashes(FLAGS_bloom_num_hash_fns);
 }
 
 }  // namespace optimizer