You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by ji...@apache.org on 2016/06/07 17:25:33 UTC
[03/12] incubator-quickstep git commit: Added query ID to BuildHash
operator and WorkOrders.
Added query ID to BuildHash operator and WorkOrders.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/ab8d21e2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/ab8d21e2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/ab8d21e2
Branch: refs/heads/master
Commit: ab8d21e2416d73afe077c0b1457d0477ade78e00
Parents: 9a141fa
Author: Harshad Deshmukh <ha...@cs.wisc.edu>
Authored: Mon May 2 23:19:00 2016 -0500
Committer: Harshad Deshmukh <ha...@cs.wisc.edu>
Committed: Mon May 2 23:19:00 2016 -0500
----------------------------------------------------------------------
query_optimizer/ExecutionGenerator.cpp | 3 ++-
relational_operators/BuildHashOperator.cpp | 2 ++
relational_operators/BuildHashOperator.hpp | 17 +++++++++++++----
relational_operators/WorkOrder.proto | 1 +
relational_operators/WorkOrderFactory.cpp | 3 ++-
.../tests/HashJoinOperator_unittest.cpp | 18 ++++++++++++------
6 files changed, 32 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/ab8d21e2/query_optimizer/ExecutionGenerator.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionGenerator.cpp b/query_optimizer/ExecutionGenerator.cpp
index c66410a..d7dc568 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -698,7 +698,8 @@ void ExecutionGenerator::convertHashJoin(const P::HashJoinPtr &physical_plan) {
build_relation_info->isStoredRelation(),
build_attribute_ids,
any_build_attributes_nullable,
- join_hash_table_index));
+ join_hash_table_index,
+ query_handle_->query_id()));
// Create InsertDestination proto.
const CatalogRelation *output_relation = nullptr;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/ab8d21e2/relational_operators/BuildHashOperator.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/BuildHashOperator.cpp b/relational_operators/BuildHashOperator.cpp
index df92159..c6f6f96 100644
--- a/relational_operators/BuildHashOperator.cpp
+++ b/relational_operators/BuildHashOperator.cpp
@@ -73,6 +73,7 @@ bool BuildHashOperator::getAllWorkOrders(
join_key_attributes_,
any_join_key_attributes_nullable_,
input_block_id,
+ query_id_,
hash_table,
storage_manager),
op_index_);
@@ -88,6 +89,7 @@ bool BuildHashOperator::getAllWorkOrders(
join_key_attributes_,
any_join_key_attributes_nullable_,
input_relation_block_ids_[num_workorders_generated_],
+ query_id_,
hash_table,
storage_manager),
op_index_);
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/ab8d21e2/relational_operators/BuildHashOperator.hpp
----------------------------------------------------------------------
diff --git a/relational_operators/BuildHashOperator.hpp b/relational_operators/BuildHashOperator.hpp
index f9d830f..973a214 100644
--- a/relational_operators/BuildHashOperator.hpp
+++ b/relational_operators/BuildHashOperator.hpp
@@ -69,13 +69,16 @@ class BuildHashOperator : public RelationalOperator {
* @param hash_table_index The index of the JoinHashTable in QueryContext.
* The HashTable's key Type(s) should be the Type(s) of the
* join_key_attributes in input_relation.
+ * @param The ID of the query to which this operator belongs.
**/
BuildHashOperator(const CatalogRelation &input_relation,
const bool input_relation_is_stored,
const std::vector<attribute_id> &join_key_attributes,
const bool any_join_key_attributes_nullable,
- const QueryContext::join_hash_table_id hash_table_index)
- : input_relation_(input_relation),
+ const QueryContext::join_hash_table_id hash_table_index,
+ const std::size_t query_id)
+ : RelationalOperator(query_id),
+ input_relation_(input_relation),
input_relation_is_stored_(input_relation_is_stored),
join_key_attributes_(join_key_attributes),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
@@ -133,6 +136,7 @@ class BuildHashWorkOrder : public WorkOrder {
* input_relation.
* @param any_join_key_attributes_nullable If any attribute is nullable.
* @param build_block_id The block id.
+ * @param query_id The ID of the query.
* @param hash_table The JoinHashTable to use.
* @param storage_manager The StorageManager to use.
**/
@@ -140,9 +144,11 @@ class BuildHashWorkOrder : public WorkOrder {
const std::vector<attribute_id> &join_key_attributes,
const bool any_join_key_attributes_nullable,
const block_id build_block_id,
+ const std::size_t query_id,
JoinHashTable *hash_table,
StorageManager *storage_manager)
- : input_relation_(input_relation),
+ : WorkOrder(query_id),
+ input_relation_(input_relation),
join_key_attributes_(join_key_attributes),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
build_block_id_(build_block_id),
@@ -156,6 +162,7 @@ class BuildHashWorkOrder : public WorkOrder {
* @param join_key_attributes The IDs of equijoin attributes in
* input_relation.
* @param any_join_key_attributes_nullable If any attribute is nullable.
+ * @param query_id The ID of the query.
* @param build_block_id The block id.
* @param hash_table The JoinHashTable to use.
* @param storage_manager The StorageManager to use.
@@ -164,9 +171,11 @@ class BuildHashWorkOrder : public WorkOrder {
std::vector<attribute_id> &&join_key_attributes,
const bool any_join_key_attributes_nullable,
const block_id build_block_id,
+ const std::size_t query_id,
JoinHashTable *hash_table,
StorageManager *storage_manager)
- : input_relation_(input_relation),
+ : WorkOrder(query_id),
+ input_relation_(input_relation),
join_key_attributes_(std::move(join_key_attributes)),
any_join_key_attributes_nullable_(any_join_key_attributes_nullable),
build_block_id_(build_block_id),
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/ab8d21e2/relational_operators/WorkOrder.proto
----------------------------------------------------------------------
diff --git a/relational_operators/WorkOrder.proto b/relational_operators/WorkOrder.proto
index 8ed2080..42fc9ae 100644
--- a/relational_operators/WorkOrder.proto
+++ b/relational_operators/WorkOrder.proto
@@ -48,6 +48,7 @@ enum WorkOrderType {
message WorkOrder {
required WorkOrderType work_order_type = 1;
+ required uint32 query_id = 2;
// The convention for extension numbering is that extensions for a particular
// WorkOrderID should begin from (operator_type + 1) * 16.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/ab8d21e2/relational_operators/WorkOrderFactory.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/WorkOrderFactory.cpp b/relational_operators/WorkOrderFactory.cpp
index d34d535..79ec633 100644
--- a/relational_operators/WorkOrderFactory.cpp
+++ b/relational_operators/WorkOrderFactory.cpp
@@ -71,7 +71,7 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder
LOG(INFO) << "Creating AggregationWorkOrder";
return new AggregationWorkOrder(
proto.GetExtension(serialization::AggregationWorkOrder::block_id),
- 0, // TODO(harshad) - Replace this with true query ID.
+ proto.query_id(),
query_context->getAggregationState(
proto.GetExtension(serialization::AggregationWorkOrder::aggr_state_index)));
}
@@ -89,6 +89,7 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder
move(join_key_attributes),
proto.GetExtension(serialization::BuildHashWorkOrder::any_join_key_attributes_nullable),
proto.GetExtension(serialization::BuildHashWorkOrder::block_id),
+ proto.query_id(),
query_context->getJoinHashTable(
proto.GetExtension(serialization::BuildHashWorkOrder::join_hash_table_index)),
storage_manager);
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/ab8d21e2/relational_operators/tests/HashJoinOperator_unittest.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/tests/HashJoinOperator_unittest.cpp b/relational_operators/tests/HashJoinOperator_unittest.cpp
index 333c3f0..f1b18e7 100644
--- a/relational_operators/tests/HashJoinOperator_unittest.cpp
+++ b/relational_operators/tests/HashJoinOperator_unittest.cpp
@@ -336,7 +336,8 @@ TEST_P(HashJoinOperatorTest, LongKeyHashJoinTest) {
true /* is_stored */,
std::vector<attribute_id>(1, dim_col_long.getID()),
dim_col_long.getType().isNullable(),
- join_hash_table_index));
+ join_hash_table_index,
+ 0)); // dummy query ID
// Create the prober operator with one selection attribute.
const QueryContext::scalar_group_id selection_index = query_context_proto.scalar_groups_size();
@@ -477,7 +478,8 @@ TEST_P(HashJoinOperatorTest, IntDuplicateKeyHashJoinTest) {
true /* is_stored */,
std::vector<attribute_id>(1, dim_col_int.getID()),
dim_col_int.getType().isNullable(),
- join_hash_table_index));
+ join_hash_table_index,
+ 0)); // dummy query ID
// Create the prober operator with two selection attributes.
const QueryContext::scalar_group_id selection_index = query_context_proto.scalar_groups_size();
@@ -636,7 +638,8 @@ TEST_P(HashJoinOperatorTest, CharKeyCartesianProductHashJoinTest) {
true /* is_stored */,
std::vector<attribute_id>(1, dim_col_char.getID()),
dim_col_char.getType().isNullable(),
- join_hash_table_index));
+ join_hash_table_index,
+ 0)); // dummy query ID.
// Create prober operator with one selection attribute.
const QueryContext::scalar_group_id selection_index = query_context_proto.scalar_groups_size();
@@ -770,7 +773,8 @@ TEST_P(HashJoinOperatorTest, VarCharDuplicateKeyHashJoinTest) {
true /* is_stored */,
std::vector<attribute_id>(1, dim_col_varchar.getID()),
dim_col_varchar.getType().isNullable(),
- join_hash_table_index));
+ join_hash_table_index,
+ 0)); // dummy query ID.
// Create prober operator with two selection attributes.
const QueryContext::scalar_group_id selection_index = query_context_proto.scalar_groups_size();
@@ -939,7 +943,8 @@ TEST_P(HashJoinOperatorTest, CompositeKeyHashJoinTest) {
true /* is_stored */,
dim_key_attrs,
dim_col_long.getType().isNullable() || dim_col_varchar.getType().isNullable(),
- join_hash_table_index));
+ join_hash_table_index,
+ 0)); // dummy query ID.
// Create the prober operator with two selection attributes.
const QueryContext::scalar_group_id selection_index = query_context_proto.scalar_groups_size();
@@ -1113,7 +1118,8 @@ TEST_P(HashJoinOperatorTest, CompositeKeyHashJoinWithResidualPredicateTest) {
true /* is_stored */,
dim_key_attrs,
dim_col_long.getType().isNullable() || dim_col_varchar.getType().isNullable(),
- join_hash_table_index));
+ join_hash_table_index,
+ 0)); // dummy query ID.
// Create prober operator with two selection attributes.
const QueryContext::scalar_group_id selection_index = query_context_proto.scalar_groups_size();