You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by hb...@apache.org on 2016/06/08 20:49:06 UTC
[07/16] incubator-quickstep git commit: Added query ID to hash join
operator.
Added query ID to hash join operator.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/06d35016
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/06d35016
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/06d35016
Branch: refs/heads/query-manager-used-in-foreman
Commit: 06d35016a65b394404e17ead321012ad55298246
Parents: 0712707
Author: Harshad Deshmukh <hb...@apache.org>
Authored: Sun Jun 5 21:01:17 2016 -0500
Committer: Harshad Deshmukh <hb...@apache.org>
Committed: Sun Jun 5 21:01:17 2016 -0500
----------------------------------------------------------------------
query_optimizer/ExecutionGenerator.cpp | 1 +
.../tests/ExecutionHeuristics_unittest.cpp | 6 ++--
relational_operators/HashJoinOperator.cpp | 4 +++
relational_operators/HashJoinOperator.hpp | 31 +++++++++++++++-----
relational_operators/WorkOrderFactory.cpp | 4 +++
.../tests/HashJoinOperator_unittest.cpp | 18 ++++++++----
6 files changed, 49 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/06d35016/query_optimizer/ExecutionGenerator.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionGenerator.cpp b/query_optimizer/ExecutionGenerator.cpp
index 54a81e3..f5e47bd 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -788,6 +788,7 @@ void ExecutionGenerator::convertHashJoin(const P::HashJoinPtr &physical_plan) {
join_hash_table_index,
residual_predicate_index,
project_expressions_group_index,
+ query_handle_->query_id(),
is_selection_on_build.get(),
join_type));
insert_destination_proto->set_relational_op_index(join_operator_index);
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/06d35016/query_optimizer/tests/ExecutionHeuristics_unittest.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/ExecutionHeuristics_unittest.cpp b/query_optimizer/tests/ExecutionHeuristics_unittest.cpp
index 12acaff..a08a476 100644
--- a/query_optimizer/tests/ExecutionHeuristics_unittest.cpp
+++ b/query_optimizer/tests/ExecutionHeuristics_unittest.cpp
@@ -79,7 +79,8 @@ class ExecutionHeuristicsTest : public ::testing::Test {
true,
build_attribute_ids,
false,
- join_hash_table_index));
+ join_hash_table_index,
+ 0 /* dummy query ID */));
return build_operator_index;
}
@@ -100,7 +101,8 @@ class ExecutionHeuristicsTest : public ::testing::Test {
0,
join_hash_table_index,
0,
- 0));
+ 0,
+ 0 /* dummy query ID */));
return join_operator_index;
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/06d35016/relational_operators/HashJoinOperator.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/HashJoinOperator.cpp b/relational_operators/HashJoinOperator.cpp
index aa03794..d8c7304 100644
--- a/relational_operators/HashJoinOperator.cpp
+++ b/relational_operators/HashJoinOperator.cpp
@@ -298,6 +298,7 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
residual_predicate,
selection,
hash_table,
+ query_id_,
output_destination,
storage_manager),
op_index_);
@@ -316,6 +317,7 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
residual_predicate,
selection,
hash_table,
+ query_id_,
output_destination,
storage_manager),
op_index_);
@@ -356,6 +358,7 @@ bool HashJoinOperator::getAllOuterJoinWorkOrders(
selection,
is_selection_on_build_,
hash_table,
+ query_id_,
output_destination,
storage_manager),
op_index_);
@@ -375,6 +378,7 @@ bool HashJoinOperator::getAllOuterJoinWorkOrders(
selection,
is_selection_on_build_,
hash_table,
+ query_id_,
output_destination,
storage_manager),
op_index_);
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/06d35016/relational_operators/HashJoinOperator.hpp
----------------------------------------------------------------------
diff --git a/relational_operators/HashJoinOperator.hpp b/relational_operators/HashJoinOperator.hpp
index fcc087a..b0a26dc 100644
--- a/relational_operators/HashJoinOperator.hpp
+++ b/relational_operators/HashJoinOperator.hpp
@@ -108,6 +108,7 @@ class HashJoinOperator : public RelationalOperator {
* corresponding to the attributes of the relation referred by
* output_relation_id. Each Scalar is evaluated for the joined tuples,
* and the resulting value is inserted into the join result.
+ * @param query_id The ID of the query.
* @param is_selection_on_build Whether each selection Scalar is using attributes
* from the build relation as input. Can be NULL for inner/semi/anti
* joins since this information is not utilized by these joins.
@@ -123,9 +124,11 @@ class HashJoinOperator : public RelationalOperator {
const QueryContext::join_hash_table_id hash_table_index,
const QueryContext::predicate_id residual_predicate_index,
const QueryContext::scalar_group_id selection_index,
+ const std::size_t query_id,
const std::vector<bool> *is_selection_on_build = nullptr,
const JoinType join_type = JoinType::kInnerJoin)
- : build_relation_(build_relation),
+ : RelationalOperator(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
probe_relation_is_stored_(probe_relation_is_stored),
join_key_attributes_(join_key_attributes),
@@ -254,9 +257,11 @@ class HashInnerJoinWorkOrder : public WorkOrder {
const Predicate *residual_predicate,
const std::vector<std::unique_ptr<const Scalar>> &selection,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
- : build_relation_(build_relation),
+ : WorkOrder(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
join_key_attributes_(join_key_attributes),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -297,9 +302,11 @@ class HashInnerJoinWorkOrder : public WorkOrder {
const Predicate *residual_predicate,
const std::vector<std::unique_ptr<const Scalar>> &selection,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
- : build_relation_(build_relation),
+ : WorkOrder(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
join_key_attributes_(std::move(join_key_attributes)),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -377,9 +384,11 @@ class HashSemiJoinWorkOrder : public WorkOrder {
const Predicate *residual_predicate,
const std::vector<std::unique_ptr<const Scalar>> &selection,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
- : build_relation_(build_relation),
+ : WorkOrder(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
join_key_attributes_(join_key_attributes),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -420,9 +429,11 @@ class HashSemiJoinWorkOrder : public WorkOrder {
const Predicate *residual_predicate,
const std::vector<std::unique_ptr<const Scalar>> &selection,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
- : build_relation_(build_relation),
+ : WorkOrder(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
join_key_attributes_(std::move(join_key_attributes)),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -493,9 +504,11 @@ class HashAntiJoinWorkOrder : public WorkOrder {
const Predicate *residual_predicate,
const std::vector<std::unique_ptr<const Scalar>> &selection,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
- : build_relation_(build_relation),
+ : WorkOrder(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
join_key_attributes_(join_key_attributes),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -536,9 +549,11 @@ class HashAntiJoinWorkOrder : public WorkOrder {
const Predicate *residual_predicate,
const std::vector<std::unique_ptr<const Scalar>> &selection,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
- : build_relation_(build_relation),
+ : WorkOrder(query_id),
+ build_relation_(build_relation),
probe_relation_(probe_relation),
join_key_attributes_(std::move(join_key_attributes)),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -602,6 +617,7 @@ class HashOuterJoinWorkOrder : public WorkOrder {
* is using attributes from the build relation as input. Note that the
* length of this vector should equal the length of \p selection.
* @param lookup_block_id The block id of the probe_relation.
+ * @param query_id The ID of the query.
* @param output_destination The InsertDestination to insert the join results.
* @param storage_manager The StorageManager to use.
**/
@@ -613,6 +629,7 @@ class HashOuterJoinWorkOrder : public WorkOrder {
const std::vector<std::unique_ptr<const Scalar>> &selection,
const std::vector<bool> &is_selection_on_build,
const JoinHashTable &hash_table,
+ const std::size_t query_id,
InsertDestination *output_destination,
StorageManager *storage_manager)
: build_relation_(build_relation),
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/06d35016/relational_operators/WorkOrderFactory.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/WorkOrderFactory.cpp b/relational_operators/WorkOrderFactory.cpp
index 60e110c..b91fe2d 100644
--- a/relational_operators/WorkOrderFactory.cpp
+++ b/relational_operators/WorkOrderFactory.cpp
@@ -195,6 +195,7 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder
residual_predicate,
selection,
hash_table,
+ proto.query_id(),
output_destination,
storage_manager);
}
@@ -209,6 +210,7 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder
residual_predicate,
selection,
hash_table,
+ proto.query_id(),
output_destination,
storage_manager);
}
@@ -231,6 +233,7 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder
selection,
move(is_selection_on_build),
hash_table,
+ proto.query_id(),
output_destination,
storage_manager);
}
@@ -245,6 +248,7 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder
residual_predicate,
selection,
hash_table,
+ proto.query_id(),
output_destination,
storage_manager);
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/06d35016/relational_operators/tests/HashJoinOperator_unittest.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/tests/HashJoinOperator_unittest.cpp b/relational_operators/tests/HashJoinOperator_unittest.cpp
index f1b18e7..dfec228 100644
--- a/relational_operators/tests/HashJoinOperator_unittest.cpp
+++ b/relational_operators/tests/HashJoinOperator_unittest.cpp
@@ -369,7 +369,8 @@ TEST_P(HashJoinOperatorTest, LongKeyHashJoinTest) {
output_destination_index,
join_hash_table_index,
QueryContext::kInvalidPredicateId /* residual_predicate_index */,
- selection_index));
+ selection_index,
+ 0 /* dummy query ID */));
// Set up the QueryContext.
query_context_.reset(new QueryContext(query_context_proto,
@@ -516,7 +517,8 @@ TEST_P(HashJoinOperatorTest, IntDuplicateKeyHashJoinTest) {
output_destination_index,
join_hash_table_index,
QueryContext::kInvalidPredicateId /* residual_predicate_index */,
- selection_index));
+ selection_index,
+ 0 /* dummy query ID */));
// Set up the QueryContext.
query_context_.reset(new QueryContext(query_context_proto,
@@ -671,7 +673,8 @@ TEST_P(HashJoinOperatorTest, CharKeyCartesianProductHashJoinTest) {
output_destination_index,
join_hash_table_index,
QueryContext::kInvalidPredicateId /* residual_predicate_index */,
- selection_index));
+ selection_index,
+ 0 /* dummy query ID */));
// Set up the QueryContext.
query_context_.reset(new QueryContext(query_context_proto,
@@ -811,7 +814,8 @@ TEST_P(HashJoinOperatorTest, VarCharDuplicateKeyHashJoinTest) {
output_destination_index,
join_hash_table_index,
QueryContext::kInvalidPredicateId /* residual_predicate_index */,
- selection_index));
+ selection_index,
+ 0 /* dummy query ID */));
// Set up the QueryContext.
query_context_.reset(new QueryContext(query_context_proto,
@@ -985,7 +989,8 @@ TEST_P(HashJoinOperatorTest, CompositeKeyHashJoinTest) {
output_destination_index,
join_hash_table_index,
QueryContext::kInvalidPredicateId /* residual_predicate_index */,
- selection_index));
+ selection_index,
+ 0 /* dummy query ID */));
// Set up the QueryContext.
query_context_.reset(new QueryContext(query_context_proto,
@@ -1170,7 +1175,8 @@ TEST_P(HashJoinOperatorTest, CompositeKeyHashJoinWithResidualPredicateTest) {
output_destination_index,
join_hash_table_index,
residual_pred_index,
- selection_index));
+ selection_index,
+ 0 /* dummy query ID */));
// Set up the QueryContext.
query_context_.reset(new QueryContext(query_context_proto,