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);
 };