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/14 02:14:51 UTC
[1/2] incubator-quickstep git commit: Moved OptimizerContext
standalone.
Repository: incubator-quickstep
Updated Branches:
refs/heads/opt-refactor 572ba5911 -> d227e19e4
Moved OptimizerContext standalone.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/b5798ed8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/b5798ed8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/b5798ed8
Branch: refs/heads/opt-refactor
Commit: b5798ed8e0bf4b0e083bb0437d2c25889644d9d2
Parents: 572ba59
Author: Zuyu Zhang <zu...@twitter.com>
Authored: Sat Aug 13 16:53:57 2016 -0700
Committer: Zuyu Zhang <zu...@twitter.com>
Committed: Sat Aug 13 16:53:57 2016 -0700
----------------------------------------------------------------------
cli/tests/CommandExecutorTestRunner.cpp | 9 +++++----
cli/tests/CommandExecutorTestRunner.hpp | 2 ++
query_optimizer/CMakeLists.txt | 2 +-
query_optimizer/Optimizer.cpp | 5 +++--
query_optimizer/Optimizer.hpp | 15 ++++-----------
query_optimizer/QueryProcessor.cpp | 7 ++++---
query_optimizer/QueryProcessor.hpp | 3 +++
.../tests/ExecutionGeneratorTestRunner.cpp | 9 +++++----
.../tests/ExecutionGeneratorTestRunner.hpp | 3 ++-
9 files changed, 29 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/cli/tests/CommandExecutorTestRunner.cpp
----------------------------------------------------------------------
diff --git a/cli/tests/CommandExecutorTestRunner.cpp b/cli/tests/CommandExecutorTestRunner.cpp
index fbab72d..41cc9da 100644
--- a/cli/tests/CommandExecutorTestRunner.cpp
+++ b/cli/tests/CommandExecutorTestRunner.cpp
@@ -89,11 +89,12 @@ void CommandExecutorTestRunner::runTestCase(
output_stream.file());
} else {
QueryHandle query_handle(0 /* query_id */, main_thread_client_id_);
+ O::OptimizerContext optimizer_context;
- O::Optimizer optimizer;
- optimizer.generateQueryHandle(parse_statement,
- test_database_loader_.catalog_database(),
- &query_handle);
+ optimizer_.generateQueryHandle(parse_statement,
+ test_database_loader_.catalog_database(),
+ &optimizer_context,
+ &query_handle);
AdmitRequestMessage request_message(&query_handle);
TaggedMessage admit_tagged_message(
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/cli/tests/CommandExecutorTestRunner.hpp
----------------------------------------------------------------------
diff --git a/cli/tests/CommandExecutorTestRunner.hpp b/cli/tests/CommandExecutorTestRunner.hpp
index 682dc81..83c5a9a 100644
--- a/cli/tests/CommandExecutorTestRunner.hpp
+++ b/cli/tests/CommandExecutorTestRunner.hpp
@@ -33,6 +33,7 @@
#include "query_execution/Worker.hpp"
#include "query_execution/WorkerDirectory.hpp"
#include "query_execution/WorkerMessage.hpp"
+#include "query_optimizer/Optimizer.hpp"
#include "query_optimizer/tests/TestDatabaseLoader.hpp"
#include "utility/Macros.hpp"
#include "utility/textbased_test/TextBasedTestDriver.hpp"
@@ -103,6 +104,7 @@ class CommandExecutorTestRunner : public TextBasedTestRunner {
private:
SqlParserWrapper sql_parser_;
optimizer::TestDatabaseLoader test_database_loader_;
+ optimizer::Optimizer optimizer_;
tmb::client_id main_thread_client_id_;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt
index c24ee89..56ae52f 100644
--- a/query_optimizer/CMakeLists.txt
+++ b/query_optimizer/CMakeLists.txt
@@ -181,7 +181,6 @@ target_link_libraries(quickstep_queryoptimizer_LogicalToPhysicalMapper
target_link_libraries(quickstep_queryoptimizer_Optimizer
quickstep_queryoptimizer_ExecutionGenerator
quickstep_queryoptimizer_LogicalGenerator
- quickstep_queryoptimizer_OptimizerContext
quickstep_queryoptimizer_PhysicalGenerator
quickstep_utility_Macros)
target_link_libraries(quickstep_queryoptimizer_OptimizerContext
@@ -221,6 +220,7 @@ target_link_libraries(quickstep_queryoptimizer_QueryProcessor
quickstep_catalog_Catalog
quickstep_catalog_Catalog_proto
quickstep_queryoptimizer_Optimizer
+ quickstep_queryoptimizer_OptimizerContext
quickstep_storage_StorageManager
quickstep_utility_Macros)
target_link_libraries(quickstep_queryoptimizer_Validator
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/Optimizer.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/Optimizer.cpp b/query_optimizer/Optimizer.cpp
index 5a2c6e1..a8b23ba 100644
--- a/query_optimizer/Optimizer.cpp
+++ b/query_optimizer/Optimizer.cpp
@@ -28,10 +28,11 @@ namespace optimizer {
void Optimizer::generateQueryHandle(const ParseStatement &parse_statement,
CatalogDatabase *catalog_database,
+ OptimizerContext *optimizer_context,
QueryHandle *query_handle) {
- LogicalGenerator logical_generator(&optimizer_context_);
+ LogicalGenerator logical_generator(optimizer_context);
PhysicalGenerator physical_generator;
- ExecutionGenerator execution_generator(catalog_database, &optimizer_context_, query_handle);
+ ExecutionGenerator execution_generator(catalog_database, optimizer_context, query_handle);
execution_generator.generatePlan(
physical_generator.generatePlan(
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/Optimizer.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/Optimizer.hpp b/query_optimizer/Optimizer.hpp
index 9a7f48a..13b6d94 100644
--- a/query_optimizer/Optimizer.hpp
+++ b/query_optimizer/Optimizer.hpp
@@ -20,7 +20,6 @@
#ifndef QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_HPP_
#define QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_HPP_
-#include "query_optimizer/OptimizerContext.hpp"
#include "utility/Macros.hpp"
namespace quickstep {
@@ -31,6 +30,8 @@ class QueryHandle;
namespace optimizer {
+class OptimizerContext;
+
/** \addtogroup QueryOptimizer
* @{
*/
@@ -59,23 +60,15 @@ class Optimizer {
*
* @param parse_statement The parse tree of the input query.
* @param catalog_database The database that the query is executed on.
+ * @param optimizer_context The optimizer context of the input query.
* @param query_handle The generated query handle to output.
*/
void generateQueryHandle(const ParseStatement &parse_statement,
CatalogDatabase *catalog_database,
+ OptimizerContext *optimizer_context,
QueryHandle *query_handle);
- /**
- * @return True if the catalog will be permanently changed after executing the
- * query and needs to be saved.
- */
- bool isCatalogChanged() const {
- return optimizer_context_.is_catalog_changed();
- }
-
private:
- OptimizerContext optimizer_context_;
-
DISALLOW_COPY_AND_ASSIGN(Optimizer);
};
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/QueryProcessor.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/QueryProcessor.cpp b/query_optimizer/QueryProcessor.cpp
index fd4c55c..d74eeba 100644
--- a/query_optimizer/QueryProcessor.cpp
+++ b/query_optimizer/QueryProcessor.cpp
@@ -26,6 +26,7 @@
#include "catalog/Catalog.hpp"
#include "catalog/Catalog.pb.h"
#include "query_optimizer/Optimizer.hpp"
+#include "query_optimizer/OptimizerContext.hpp"
using std::ifstream;
using std::ofstream;
@@ -34,11 +35,11 @@ namespace quickstep {
void QueryProcessor::generateQueryHandle(const ParseStatement &statement,
QueryHandle *query_handle) {
- optimizer::Optimizer optimizer;
+ optimizer::OptimizerContext optimizer_context;
- optimizer.generateQueryHandle(statement, getDefaultDatabase(), query_handle);
+ optimizer_.generateQueryHandle(statement, getDefaultDatabase(), &optimizer_context, query_handle);
- if (optimizer.isCatalogChanged() && !catalog_altered_) {
+ if (optimizer_context.is_catalog_changed() && !catalog_altered_) {
catalog_altered_ = true;
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/QueryProcessor.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/QueryProcessor.hpp b/query_optimizer/QueryProcessor.hpp
index 2a7e942..5d3818e 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"
@@ -194,6 +195,8 @@ class QueryProcessor {
private:
void loadCatalog(); // If it exists, free catalog_ before calling this
+ optimizer::Optimizer optimizer_;
+
std::string catalog_filename_;
std::unique_ptr<Catalog> catalog_;
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
index 5392563..06397d4 100644
--- a/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
+++ b/query_optimizer/tests/ExecutionGeneratorTestRunner.cpp
@@ -73,11 +73,12 @@ void ExecutionGeneratorTestRunner::runTestCase(
std::printf("%s\n", parse_statement.toString().c_str());
try {
QueryHandle query_handle(0 /* query_id */, main_thread_client_id_);
+ OptimizerContext optimizer_context;
- Optimizer optimizer;
- optimizer.generateQueryHandle(parse_statement,
- test_database_loader_.catalog_database(),
- &query_handle);
+ optimizer_.generateQueryHandle(parse_statement,
+ test_database_loader_.catalog_database(),
+ &optimizer_context,
+ &query_handle);
QueryExecutionUtil::ConstructAndSendAdmitRequestMessage(
main_thread_client_id_,
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/b5798ed8/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp b/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
index b8cd02a..f4e11ea 100644
--- a/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
+++ b/query_optimizer/tests/ExecutionGeneratorTestRunner.hpp
@@ -32,6 +32,7 @@
#include "query_execution/Worker.hpp"
#include "query_execution/WorkerDirectory.hpp"
#include "query_execution/WorkerMessage.hpp"
+#include "query_optimizer/Optimizer.hpp"
#include "query_optimizer/tests/TestDatabaseLoader.hpp"
#include "threading/ThreadIDBasedMap.hpp"
#include "utility/Macros.hpp"
@@ -41,7 +42,6 @@
#include "tmb/message_bus.h"
namespace quickstep {
-
namespace optimizer {
/**
@@ -106,6 +106,7 @@ class ExecutionGeneratorTestRunner : public TextBasedTestRunner {
private:
SqlParserWrapper sql_parser_;
TestDatabaseLoader test_database_loader_;
+ Optimizer optimizer_;
MessageBusImpl bus_;
std::unique_ptr<ForemanSingleNode> foreman_;
[2/2] incubator-quickstep git commit: Removed unused OptimizerContext,
and construct PhysicalGenerator once.
Posted by zu...@apache.org.
Removed unused OptimizerContext, and construct PhysicalGenerator once.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/d227e19e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/d227e19e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/d227e19e
Branch: refs/heads/opt-refactor
Commit: d227e19e4b02e6d725782195ee0bcc9d143bc50c
Parents: b5798ed
Author: Zuyu Zhang <zu...@twitter.com>
Authored: Sat Aug 13 18:40:26 2016 -0700
Committer: Zuyu Zhang <zu...@twitter.com>
Committed: Sat Aug 13 18:40:26 2016 -0700
----------------------------------------------------------------------
query_optimizer/ExecutionGenerator.hpp | 6 ------
query_optimizer/Optimizer.cpp | 6 ++----
query_optimizer/Optimizer.hpp | 3 +++
3 files changed, 5 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/d227e19e/query_optimizer/ExecutionGenerator.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionGenerator.hpp b/query_optimizer/ExecutionGenerator.hpp
index 3a38f2c..6017aa5 100644
--- a/query_optimizer/ExecutionGenerator.hpp
+++ b/query_optimizer/ExecutionGenerator.hpp
@@ -83,8 +83,6 @@ class InsertDestination;
namespace optimizer {
-class OptimizerContext;
-
/** \addtogroup QueryOptimizer
* @{
*/
@@ -98,14 +96,11 @@ class ExecutionGenerator {
* @brief Constructor. Does not take ownership of \p query_handle.
*
* @param catalog_database The catalog database where this query is executed.
- * @param optimizer_context Optimizer context.
* @param query_handle The pointer to the output query handle.
*/
ExecutionGenerator(CatalogDatabase *catalog_database,
- OptimizerContext *optimizer_context,
QueryHandle *query_handle)
: catalog_database_(DCHECK_NOTNULL(catalog_database)),
- optimizer_context_(DCHECK_NOTNULL(optimizer_context)),
query_handle_(DCHECK_NOTNULL(query_handle)),
execution_plan_(DCHECK_NOTNULL(query_handle->getQueryPlanMutable())),
query_context_proto_(DCHECK_NOTNULL(query_handle->getQueryContextProtoMutable())),
@@ -389,7 +384,6 @@ class ExecutionGenerator {
CatalogDatabase *catalog_database_;
- OptimizerContext *optimizer_context_;
QueryHandle *query_handle_;
QueryPlan *execution_plan_; // A part of QueryHandle.
serialization::QueryContext *query_context_proto_; // A part of QueryHandle.
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/d227e19e/query_optimizer/Optimizer.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/Optimizer.cpp b/query_optimizer/Optimizer.cpp
index a8b23ba..b14c938 100644
--- a/query_optimizer/Optimizer.cpp
+++ b/query_optimizer/Optimizer.cpp
@@ -21,7 +21,6 @@
#include "query_optimizer/ExecutionGenerator.hpp"
#include "query_optimizer/LogicalGenerator.hpp"
-#include "query_optimizer/PhysicalGenerator.hpp"
namespace quickstep {
namespace optimizer {
@@ -31,11 +30,10 @@ void Optimizer::generateQueryHandle(const ParseStatement &parse_statement,
OptimizerContext *optimizer_context,
QueryHandle *query_handle) {
LogicalGenerator logical_generator(optimizer_context);
- PhysicalGenerator physical_generator;
- ExecutionGenerator execution_generator(catalog_database, optimizer_context, query_handle);
+ ExecutionGenerator execution_generator(catalog_database, query_handle);
execution_generator.generatePlan(
- physical_generator.generatePlan(
+ physical_generator_.generatePlan(
logical_generator.generatePlan(*catalog_database, parse_statement)));
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/d227e19e/query_optimizer/Optimizer.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/Optimizer.hpp b/query_optimizer/Optimizer.hpp
index 13b6d94..36f956a 100644
--- a/query_optimizer/Optimizer.hpp
+++ b/query_optimizer/Optimizer.hpp
@@ -20,6 +20,7 @@
#ifndef QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_HPP_
#define QUICKSTEP_QUERY_OPTIMIZER_OPTIMIZER_HPP_
+#include "query_optimizer/PhysicalGenerator.hpp"
#include "utility/Macros.hpp"
namespace quickstep {
@@ -69,6 +70,8 @@ class Optimizer {
QueryHandle *query_handle);
private:
+ PhysicalGenerator physical_generator_;
+
DISALLOW_COPY_AND_ASSIGN(Optimizer);
};