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/08/12 16:06:22 UTC
[05/50] [abbrv] incubator-quickstep git commit: Removed the redundant
query id in the optimizer.
Removed the redundant query id in the optimizer.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/8cd5a56c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/8cd5a56c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/8cd5a56c
Branch: refs/heads/travis-grpc
Commit: 8cd5a56c92f2e0e6c2acb2a979a2ae5fb2e54792
Parents: d4e714c
Author: Zuyu Zhang <zu...@twitter.com>
Authored: Mon Aug 1 23:02:37 2016 -0700
Committer: Zuyu Zhang <zu...@twitter.com>
Committed: Wed Aug 3 11:53:46 2016 -0700
----------------------------------------------------------------------
cli/tests/CommandExecutorTestRunner.cpp | 5 ++---
query_optimizer/CMakeLists.txt | 3 ---
query_optimizer/ExecutionGenerator.cpp | 4 +++-
query_optimizer/Optimizer.hpp | 9 ++-------
query_optimizer/OptimizerContext.hpp | 20 ++------------------
query_optimizer/QueryProcessor.cpp | 10 ++--------
query_optimizer/QueryProcessor.hpp | 7 +++++++
.../tests/ExecutionGeneratorTestRunner.cpp | 5 ++---
query_optimizer/tests/OptimizerTest.cpp | 3 +--
.../tests/OptimizerTextTestRunner.cpp | 3 +--
10 files changed, 22 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/cli/tests/CommandExecutorTestRunner.cpp
----------------------------------------------------------------------
diff --git a/cli/tests/CommandExecutorTestRunner.cpp b/cli/tests/CommandExecutorTestRunner.cpp
index bd7082f..dc7e43f 100644
--- a/cli/tests/CommandExecutorTestRunner.cpp
+++ b/cli/tests/CommandExecutorTestRunner.cpp
@@ -76,8 +76,7 @@ void CommandExecutorTestRunner::runTestCase(
while (true) {
ParseResult result = sql_parser_.getNextStatement();
- O::OptimizerContext optimizer_context(0 /* query_id */,
- test_database_loader_.catalog_database(),
+ O::OptimizerContext optimizer_context(test_database_loader_.catalog_database(),
test_database_loader_.storage_manager());
if (result.condition != ParseResult::kSuccess) {
@@ -99,7 +98,7 @@ void CommandExecutorTestRunner::runTestCase(
nullptr,
output_stream.file());
} else {
- QueryHandle query_handle(optimizer_context.query_id());
+ QueryHandle query_handle(0 /* query_id */);
O::LogicalGenerator logical_generator(&optimizer_context);
O::PhysicalGenerator physical_generator;
O::ExecutionGenerator execution_generator(&optimizer_context, &query_handle);
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt
index c55881f..04e54d3 100644
--- a/query_optimizer/CMakeLists.txt
+++ b/query_optimizer/CMakeLists.txt
@@ -185,7 +185,6 @@ target_link_libraries(quickstep_queryoptimizer_Optimizer
quickstep_queryoptimizer_PhysicalGenerator
quickstep_utility_Macros)
target_link_libraries(quickstep_queryoptimizer_OptimizerContext
- quickstep_catalog_CatalogTypedefs
quickstep_queryoptimizer_expressions_ExprId
quickstep_utility_Macros)
target_link_libraries(quickstep_queryoptimizer_OptimizerTree
@@ -219,8 +218,6 @@ target_link_libraries(quickstep_queryoptimizer_QueryPlan
quickstep_utility_Macros)
target_link_libraries(quickstep_queryoptimizer_QueryProcessor
quickstep_catalog_Catalog
- quickstep_catalog_CatalogDatabase
- quickstep_catalog_CatalogRelation
quickstep_catalog_Catalog_proto
quickstep_parser_ParseStatement
quickstep_queryoptimizer_Optimizer
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/ExecutionGenerator.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionGenerator.cpp b/query_optimizer/ExecutionGenerator.cpp
index fb24489..2ae6a4b 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -26,6 +26,8 @@
#include <type_traits>
#include <unordered_map>
+#include "query_optimizer/QueryOptimizerConfig.h" // For QUICKSTEP_DISTRIBUTED.
+
#ifdef QUICKSTEP_DISTRIBUTED
#include <unordered_set>
#endif
@@ -299,7 +301,7 @@ void ExecutionGenerator::generatePlanInternal(
std::string ExecutionGenerator::getNewRelationName() {
std::ostringstream out;
out << OptimizerContext::kInternalTemporaryRelationNamePrefix
- << optimizer_context_->query_id() << "_" << rel_id_;
+ << query_handle_->query_id() << "_" << rel_id_;
++rel_id_;
return out.str();
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/Optimizer.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/Optimizer.hpp b/query_optimizer/Optimizer.hpp
index 9177414..18c927d 100644
--- a/query_optimizer/Optimizer.hpp
+++ b/query_optimizer/Optimizer.hpp
@@ -18,8 +18,6 @@
#ifndef QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_HPP_
#define QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_HPP_
-#include <cstddef>
-
#include "query_optimizer/OptimizerContext.hpp"
#include "utility/Macros.hpp"
@@ -45,15 +43,12 @@ class Optimizer {
/**
* @brief Constructor.
*
- * @param query_id The query id. Used to identify a query and create distinct
- * names for temporary relations.
* @param database The database that the query is executed on.
* @param storage_manager The storage manager for the database.
*/
- Optimizer(const std::size_t query_id,
- CatalogDatabase *database,
+ Optimizer(CatalogDatabase *database,
StorageManager *storage_manager)
- : optimizer_context_(query_id, database, storage_manager) {}
+ : optimizer_context_(database, storage_manager) {}
/**
* @brief Destructor.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/OptimizerContext.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/OptimizerContext.hpp b/query_optimizer/OptimizerContext.hpp
index abdc7f4..bcab9d0 100644
--- a/query_optimizer/OptimizerContext.hpp
+++ b/query_optimizer/OptimizerContext.hpp
@@ -18,18 +18,12 @@
#ifndef QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_CONTEXT_HPP_
#define QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_CONTEXT_HPP_
-#include <cstddef>
-#include <cstdlib>
-#include <string>
-
-#include "catalog/CatalogTypedefs.hpp"
#include "query_optimizer/expressions/ExprId.hpp"
#include "utility/Macros.hpp"
namespace quickstep {
class CatalogDatabase;
-class CatalogRelation;
class StorageManager;
namespace optimizer {
@@ -49,16 +43,13 @@ class OptimizerContext {
/**
* @brief Constructor.
*
- * @param query_id The query ID.
* @param catalog_database The catalog database where this query is executed.
* @param storage_manager The storage manager to use for allocating storage
* blocks.
*/
- OptimizerContext(const std::size_t query_id,
- CatalogDatabase *catalog_database,
+ OptimizerContext(CatalogDatabase *catalog_database,
StorageManager *storage_manager)
- : query_id_(query_id),
- current_expr_id_(-1),
+ : current_expr_id_(-1),
catalog_database_(catalog_database),
storage_manager_(storage_manager),
has_nested_queries_(false),
@@ -94,11 +85,6 @@ class OptimizerContext {
StorageManager* storage_manager() { return storage_manager_; }
/**
- * @return Query ID.
- */
- std::size_t query_id() const { return query_id_; }
-
- /**
* @brief Gets the next ExprId.
*
* @return A new ExprId.
@@ -133,8 +119,6 @@ class OptimizerContext {
bool is_catalog_changed() const { return is_catalog_changed_; }
private:
- const std::size_t query_id_;
-
expressions::ExprId current_expr_id_;
CatalogDatabase *catalog_database_;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/QueryProcessor.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/QueryProcessor.cpp b/query_optimizer/QueryProcessor.cpp
index 6381d3a..8af4408 100644
--- a/query_optimizer/QueryProcessor.cpp
+++ b/query_optimizer/QueryProcessor.cpp
@@ -17,20 +17,15 @@
#include "query_optimizer/QueryProcessor.hpp"
-#include <cstdint>
-#include <cstdlib>
#include <fstream>
#include <memory>
#include <string>
#include "catalog/Catalog.hpp"
#include "catalog/Catalog.pb.h"
-#include "catalog/CatalogDatabase.hpp"
-#include "catalog/CatalogRelation.hpp"
#include "parser/ParseStatement.hpp"
#include "query_optimizer/Optimizer.hpp"
#include "query_optimizer/QueryHandle.hpp"
-#include "storage/StorageManager.hpp"
using std::ifstream;
using std::ofstream;
@@ -41,10 +36,9 @@ QueryHandle* QueryProcessor::generateQueryHandle(const ParseStatement &statement
std::unique_ptr<QueryHandle> query_handle(
new QueryHandle(query_id_, statement.getPriority()));
- optimizer::Optimizer optimizer(query_id_, getDefaultDatabase(), storage_manager_.get());
- optimizer.generateQueryHandle(statement, query_handle.get());
+ optimizer_->generateQueryHandle(statement, query_handle.get());
- if (optimizer.isCatalogChanged() && !catalog_altered_) {
+ if (optimizer_->isCatalogChanged() && !catalog_altered_) {
catalog_altered_ = true;
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/QueryProcessor.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/QueryProcessor.hpp b/query_optimizer/QueryProcessor.hpp
index 32739dc..f3844a0 100644
--- a/query_optimizer/QueryProcessor.hpp
+++ b/query_optimizer/QueryProcessor.hpp
@@ -26,6 +26,7 @@
#include <string>
#include "catalog/Catalog.hpp"
+#include "query_optimizer/Optimizer.hpp"
#include "storage/StorageManager.hpp"
#include "utility/Macros.hpp"
@@ -139,6 +140,9 @@ class QueryProcessor {
query_id_(0) {
loadCatalog();
storage_manager_.reset(new StorageManager(storage_path));
+
+ // Construct after Catalog loads and StorageManager initializes.
+ optimizer_.reset(new optimizer::Optimizer(getDefaultDatabase(), storage_manager_.get()));
}
/**
@@ -190,6 +194,9 @@ class QueryProcessor {
std::unique_ptr<Catalog> catalog_;
std::unique_ptr<StorageManager> storage_manager_;
+
+ std::unique_ptr<optimizer::Optimizer> optimizer_;
+
bool catalog_altered_;
std::size_t query_id_;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
index 563a777..fd1bb86 100644
--- a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
+++ b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
@@ -73,8 +73,7 @@ void ExecutionGeneratorTestRunner::runTestCase(
while (true) {
ParseResult result = sql_parser_.getNextStatement();
- OptimizerContext optimizer_context(0 /* query_id */,
- test_database_loader_.catalog_database(),
+ OptimizerContext optimizer_context(test_database_loader_.catalog_database(),
test_database_loader_.storage_manager());
if (result.condition != ParseResult::kSuccess) {
@@ -85,7 +84,7 @@ void ExecutionGeneratorTestRunner::runTestCase(
} else {
std::printf("%s\n", result.parsed_statement->toString().c_str());
try {
- QueryHandle query_handle(optimizer_context.query_id());
+ QueryHandle query_handle(0 /* query_id */);
LogicalGenerator logical_generator(&optimizer_context);
PhysicalGenerator physical_generator;
ExecutionGenerator execution_generator(&optimizer_context,
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/tests/OptimizerTest.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/OptimizerTest.cpp b/query_optimizer/tests/OptimizerTest.cpp
index 3734719..57e2d67 100644
--- a/query_optimizer/tests/OptimizerTest.cpp
+++ b/query_optimizer/tests/OptimizerTest.cpp
@@ -59,8 +59,7 @@ OptimizerTest::OptimizerTest()
: catalog_(new Catalog),
catalog_database_(
new CatalogDatabase(catalog_.get(), "TestDatabase" /* name */, 0)),
- optimizer_context_(new OptimizerContext(0 /* query_id */,
- catalog_database_.get(),
+ optimizer_context_(new OptimizerContext(catalog_database_.get(),
nullptr /* storage_manager */)),
physical_generator_(new PhysicalGenerator()) {}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/8cd5a56c/query_optimizer/tests/OptimizerTextTestRunner.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/OptimizerTextTestRunner.cpp b/query_optimizer/tests/OptimizerTextTestRunner.cpp
index 251b64b..d790c33 100644
--- a/query_optimizer/tests/OptimizerTextTestRunner.cpp
+++ b/query_optimizer/tests/OptimizerTextTestRunner.cpp
@@ -47,8 +47,7 @@ void OptimizerTextTestRunner::runTestCase(const std::string &input,
sql_parser_.feedNextBuffer(new std::string(input));
ParseResult result = sql_parser_.getNextStatement();
- OptimizerContext optimizer_context(0 /* query_id */,
- test_database_loader_.catalog_database(),
+ OptimizerContext optimizer_context(test_database_loader_.catalog_database(),
nullptr /* storage_manager */);
if (result.condition != ParseResult::kSuccess) {
*output = result.error_message;