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

[50/50] [abbrv] incubator-quickstep git commit: Used the basic column store for tmp relations w/o variable length attributes.

Used the basic column store for tmp relations w/o variable length attributes.


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

Branch: refs/heads/tmp-relation-col-store
Commit: 82e6f0900de4b8d3d19e8e083b73c3ad0ab6abad
Parents: 04c8224
Author: Zuyu Zhang <zz...@pivotal.io>
Authored: Thu May 19 12:48:48 2016 -0700
Committer: Zuyu Zhang <zu...@apache.org>
Committed: Thu Jul 7 20:25:24 2016 -0500

----------------------------------------------------------------------
 query_optimizer/CMakeLists.txt         |  1 +
 query_optimizer/ExecutionGenerator.cpp | 23 +++++++++++++++++++++++
 storage/StorageBlockLayout.proto       |  2 +-
 3 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/82e6f090/query_optimizer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt
index 8912414..a91ab3f 100644
--- a/query_optimizer/CMakeLists.txt
+++ b/query_optimizer/CMakeLists.txt
@@ -131,6 +131,7 @@ target_link_libraries(quickstep_queryoptimizer_ExecutionGenerator
                       quickstep_relationaloperators_TextScanOperator
                       quickstep_relationaloperators_UpdateOperator
                       quickstep_storage_AggregationOperationState_proto
+                      quickstep_storage_BasicColumnStoreTupleStorageSubBlock
                       quickstep_storage_HashTableFactory
                       quickstep_storage_HashTable_proto
                       quickstep_storage_InsertDestination_proto

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/82e6f090/query_optimizer/ExecutionGenerator.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionGenerator.cpp b/query_optimizer/ExecutionGenerator.cpp
index 45f5f78..d6db2a4 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -105,6 +105,7 @@
 #include "relational_operators/TextScanOperator.hpp"
 #include "relational_operators/UpdateOperator.hpp"
 #include "storage/AggregationOperationState.pb.h"
+#include "storage/BasicColumnStoreTupleStorageSubBlock.hpp"
 #include "storage/HashTable.pb.h"
 #include "storage/HashTableFactory.hpp"
 #include "storage/InsertDestination.pb.h"
@@ -149,6 +150,8 @@ DEFINE_bool(parallelize_load, true, "Parallelize loading data files.");
 DEFINE_bool(optimize_joins, false,
             "Enable post execution plan generation optimizations for joins.");
 
+DEFINE_bool(use_column_store, true, "Use the column store for blocks in temporary relations.");
+
 namespace E = ::quickstep::optimizer::expressions;
 namespace P = ::quickstep::optimizer::physical;
 namespace S = ::quickstep::serialization;
@@ -325,6 +328,23 @@ void ExecutionGenerator::createTemporaryCatalogRelation(
     ++aid;
   }
 
+  if (FLAGS_use_column_store && !catalog_relation->isVariableLength()) {
+    StorageBlockLayoutDescription layout_description;
+    layout_description.set_num_slots(1);
+    layout_description.mutable_tuple_store_description()
+        ->set_sub_block_type(TupleStorageSubBlockDescription::BASIC_COLUMN_STORE);
+
+    DCHECK(BasicColumnStoreTupleStorageSubBlock::DescriptionIsValid(*catalog_relation,
+                                                                    layout_description.tuple_store_description()));
+
+    unique_ptr<StorageBlockLayout> layout(
+        new StorageBlockLayout(*catalog_relation, layout_description));
+    layout->finalize();
+    catalog_relation->setDefaultStorageBlockLayout(layout.release());
+  } else {
+    // Use the default row store for variable length attributes.
+  }
+
   *catalog_relation_output = catalog_relation.get();
   const relation_id output_rel_id = optimizer_context_->catalog_database()->addRelation(
       catalog_relation.release());
@@ -335,6 +355,9 @@ void ExecutionGenerator::createTemporaryCatalogRelation(
 
   insert_destination_proto->set_insert_destination_type(S::InsertDestinationType::BLOCK_POOL);
   insert_destination_proto->set_relation_id(output_rel_id);
+
+  insert_destination_proto->mutable_layout()->MergeFrom(
+      (*catalog_relation_output)->getDefaultStorageBlockLayout().getDescription());
 }
 
 void ExecutionGenerator::dropAllTemporaryRelations() {

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/82e6f090/storage/StorageBlockLayout.proto
----------------------------------------------------------------------
diff --git a/storage/StorageBlockLayout.proto b/storage/StorageBlockLayout.proto
index cafc0e9..4db6f06 100644
--- a/storage/StorageBlockLayout.proto
+++ b/storage/StorageBlockLayout.proto
@@ -66,7 +66,7 @@ message IndexSubBlockDescription {
     SMA = 1;
     BLOOM_FILTER = 2;
     BITWEAVING_H = 3;
-    BITWEAVING_V = 4;    
+    BITWEAVING_V = 4;
   }
 
   required IndexSubBlockType sub_block_type = 1;