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 2017/03/13 20:56:01 UTC
[52/60] [abbrv] incubator-quickstep git commit: Fixed the catalog
relation schema reference bug in the preloading in the distributed version.
Fixed the catalog relation schema reference bug in the preloading in the distributed version.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/4a95738d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/4a95738d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/4a95738d
Branch: refs/heads/dist-patch
Commit: 4a95738de730b03ccfb2026843f5a4e6838cfe2f
Parents: a5c68dd
Author: Zuyu Zhang <zu...@apache.org>
Authored: Fri Mar 10 14:58:39 2017 -0800
Committer: Zuyu Zhang <zu...@apache.org>
Committed: Fri Mar 10 14:58:39 2017 -0800
----------------------------------------------------------------------
catalog/tests/Catalog_unittest.cpp | 5 ++++-
query_execution/Shiftboss.cpp | 4 +++-
storage/CMakeLists.txt | 1 +
storage/PreloaderThread.cpp | 17 +++++++++++++----
storage/PreloaderThread.hpp | 12 ++++++++++--
5 files changed, 31 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/4a95738d/catalog/tests/Catalog_unittest.cpp
----------------------------------------------------------------------
diff --git a/catalog/tests/Catalog_unittest.cpp b/catalog/tests/Catalog_unittest.cpp
index 276bfa9..f761026 100644
--- a/catalog/tests/Catalog_unittest.cpp
+++ b/catalog/tests/Catalog_unittest.cpp
@@ -571,7 +571,10 @@ TEST_F(CatalogTest, CatalogIndexTest) {
}
TEST_F(CatalogTest, CatalogDatabaseCacheTest) {
- CatalogRelationSchema* const rel = createCatalogRelation("rel");
+ CatalogRelation * const rel = createCatalogRelation("rel");
+
+ rel->addBlock(BlockIdUtil::GetBlockId(0 /* domain */, 7));
+ rel->addBlock(BlockIdUtil::GetBlockId(0 /* domain */, 14));
rel->addAttribute(new CatalogAttribute(nullptr, "attr_int", TypeFactory::GetType(kInt), -1 /* id */, "int"));
rel->addAttribute(new CatalogAttribute(nullptr, "attr_long", TypeFactory::GetType(kLong)));
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/4a95738d/query_execution/Shiftboss.cpp
----------------------------------------------------------------------
diff --git a/query_execution/Shiftboss.cpp b/query_execution/Shiftboss.cpp
index 905464f..72d8913 100644
--- a/query_execution/Shiftboss.cpp
+++ b/query_execution/Shiftboss.cpp
@@ -340,9 +340,11 @@ void Shiftboss::processShiftbossRegistrationResponseMessage() {
storage_manager_->sendBlockDomainToShiftbossIndexMessage(shiftboss_index_);
if (FLAGS_preload_buffer_pool) {
+ database_cache_.update(proto.catalog_database());
+
const CatalogDatabase catalog_database(proto.catalog_database());
- PreloaderThread preloader(catalog_database, storage_manager_, cpu_id_);
+ PreloaderThread preloader(catalog_database, storage_manager_, cpu_id_, &database_cache_);
printf("Preloading the buffer pool ... \n");
const std::chrono::time_point<std::chrono::steady_clock> preload_start = std::chrono::steady_clock::now();
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/4a95738d/storage/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt
index 8b68150..6fe6436 100644
--- a/storage/CMakeLists.txt
+++ b/storage/CMakeLists.txt
@@ -827,6 +827,7 @@ target_link_libraries(quickstep_storage_PartitionedHashTablePool
target_link_libraries(quickstep_storage_PreloaderThread
glog
quickstep_catalog_CatalogDatabase
+ quickstep_catalog_CatalogDatabaseLite
quickstep_catalog_CatalogRelation
quickstep_catalog_CatalogTypedefs
quickstep_storage_StorageBlock
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/4a95738d/storage/PreloaderThread.cpp
----------------------------------------------------------------------
diff --git a/storage/PreloaderThread.cpp b/storage/PreloaderThread.cpp
index edaa143..354e468 100644
--- a/storage/PreloaderThread.cpp
+++ b/storage/PreloaderThread.cpp
@@ -27,6 +27,7 @@
#endif
#include "catalog/CatalogDatabase.hpp"
+#include "catalog/CatalogDatabaseLite.hpp"
#include "catalog/CatalogRelation.hpp"
#include "catalog/CatalogTypedefs.hpp"
#include "storage/StorageBlock.hpp"
@@ -60,8 +61,12 @@ void PreloaderThread::run() {
std::vector<block_id> blocks = relation.getBlocksSnapshot();
for (block_id current_block_id : blocks) {
try {
- BlockReference current_block =
- storage_manager_->getBlock(current_block_id, relation);
+ const CatalogRelationSchema &relation_schema =
+ database_for_schemas_ ? database_for_schemas_->getRelationSchemaById(relation.getID())
+ : relation;
+
+ const BlockReference current_block =
+ storage_manager_->getBlock(current_block_id, relation_schema);
} catch (...) {
LOG(ERROR) << "Error after loading " << blocks_loaded << "blocks";
throw;
@@ -104,8 +109,12 @@ std::size_t PreloaderThread::preloadNUMAAware(
placement_scheme->getNUMANodeForPartition(part_id);
for (block_id curr_block_id : part_scheme.getBlocksInPartition(part_id)) {
try {
- BlockReference current_block = storage_manager_->getBlock(
- curr_block_id, relation, partition_numa_node_id);
+ const CatalogRelationSchema &relation_schema =
+ database_for_schemas_ ? database_for_schemas_->getRelationSchemaById(relation.getID())
+ : relation;
+
+ const BlockReference current_block = storage_manager_->getBlock(
+ curr_block_id, relation_schema, partition_numa_node_id);
} catch (...) {
LOG(ERROR) << "Error while preloading: After loading total "
<< blocks_loaded + num_previously_loaded_blocks
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/4a95738d/storage/PreloaderThread.hpp
----------------------------------------------------------------------
diff --git a/storage/PreloaderThread.hpp b/storage/PreloaderThread.hpp
index d9853b8..af3f6ba 100644
--- a/storage/PreloaderThread.hpp
+++ b/storage/PreloaderThread.hpp
@@ -29,6 +29,7 @@
namespace quickstep {
class CatalogDatabase;
+class CatalogDatabaseLite;
class CatalogRelation;
class StorageManager;
@@ -55,13 +56,18 @@ class PreloaderThread : public Thread {
* evicted and the database will not be fully preloaded.
* @param cpu_id The ID of the CPU to affinitize this thread to, or -1 to
* indicate no affinity.
+ * @param database_for_schemas All non-temporary relations in this database
+ * will be used for referencing the schema in a block for the
+ * distributed version.
**/
PreloaderThread(const CatalogDatabase &database,
StorageManager *storage_manager,
- const int cpu_id = -1)
+ const int cpu_id = -1,
+ const CatalogDatabaseLite *database_for_schemas = nullptr)
: database_(database),
storage_manager_(storage_manager),
- cpu_id_(cpu_id) {
+ cpu_id_(cpu_id),
+ database_for_schemas_(database_for_schemas) {
}
~PreloaderThread() override {
@@ -102,6 +108,8 @@ class PreloaderThread : public Thread {
const int cpu_id_;
+ const CatalogDatabaseLite *database_for_schemas_;
+
DISALLOW_COPY_AND_ASSIGN(PreloaderThread);
};