This is an automated email from the ASF dual-hosted git repository.

changchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new c14d1b12b6 [GLUTEN-1632][CH]Daily Update Clickhouse Version (20250103) 
(#8407)
c14d1b12b6 is described below

commit c14d1b12b6795eb31e2a5b0f14df821ab8035089
Author: Kyligence Git <[email protected]>
AuthorDate: Fri Jan 3 08:19:14 2025 -0600

    [GLUTEN-1632][CH]Daily Update Clickhouse Version (20250103) (#8407)
    
    * [GLUTEN-1632][CH]Daily Update Clickhouse Version (20250103)
    
    * Fix gtest due to https://github.com/ClickHouse/ClickHouse/pull/73811
    
    * Another way to set query_plan_enable_optimizations to false
    
    * Try to set max_threads to 1, but 
GlutenClickHouseTPCHColumnarShuffleParquetAQESuite::q1 and q2 will fail
    
    * Fix Build Due to https://github.com/ClickHouse/ClickHouse/pull/73693
    
    * Restore QueryPlanOptimizationSettings
    
    * COLLECT_METRICS
    
    * Fix build due to https://github.com/ClickHouse/ClickHouse/pull/73994
    
    ---------
    
    Co-authored-by: kyligence-git <[email protected]>
    Co-authored-by: Chang Chen <[email protected]>
---
 .../backendsapi/clickhouse/CHTransformerApi.scala       |  7 -------
 .../gluten/backendsapi/clickhouse/RuntimeSettings.scala | 11 +++++++++++
 .../tpch/GlutenClickHouseTPCHSaltNullParquetSuite.scala |  7 +++----
 cpp-ch/clickhouse.version                               |  4 ++--
 cpp-ch/local-engine/Common/CHUtil.cpp                   |  4 ++++
 cpp-ch/local-engine/Common/GlutenConfig.h               |  4 ++--
 cpp-ch/local-engine/Common/GlutenSettings.cpp           |  6 +++++-
 cpp-ch/local-engine/Common/GlutenSettings.h             | 11 ++++++++++-
 cpp-ch/local-engine/Common/PlanUtil.cpp                 |  2 +-
 cpp-ch/local-engine/Operator/BranchStep.cpp             | 17 +++++++++--------
 cpp-ch/local-engine/Operator/BranchStep.h               |  6 ++++--
 .../Parser/RelParsers/GroupLimitRelParser.cpp           |  2 +-
 cpp-ch/local-engine/Parser/RelParsers/JoinRelParser.cpp |  4 ++--
 cpp-ch/local-engine/Parser/SerializedPlanParser.cpp     | 13 +++++++++----
 .../Parser/scalar_function_parser/arrayExcept.cpp       |  2 +-
 .../Parser/scalar_function_parser/arrayRemove.cpp       |  2 +-
 .../Parser/scalar_function_parser/arrayRepeat.cpp       |  2 +-
 .../Parser/scalar_function_parser/lambdaFunction.cpp    |  2 +-
 cpp-ch/local-engine/Storages/Cache/CacheManager.cpp     |  4 +++-
 cpp-ch/local-engine/tests/gtest_ch_functions.cpp        |  6 +++---
 cpp-ch/local-engine/tests/gtest_ch_join.cpp             |  7 ++++---
 .../tests/json/gtest_local_engine_config.json           |  1 -
 22 files changed, 77 insertions(+), 47 deletions(-)

diff --git 
a/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHTransformerApi.scala
 
b/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHTransformerApi.scala
index ef5a4eff6f..8487388f3f 100644
--- 
a/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHTransformerApi.scala
+++ 
b/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHTransformerApi.scala
@@ -142,13 +142,6 @@ class CHTransformerApi extends TransformerApi with Logging 
{
       "spark.hadoop.dfs.client.log.severity",
       s"$hdfsConfigPrefix.dfs_client_log_severity")
 
-    // TODO: set default to true when metrics could be collected
-    // while ch query plan optimization is enabled.
-    val planOptKey = CHConf.runtimeSettings("query_plan_enable_optimizations")
-    if (!nativeConfMap.containsKey(planOptKey)) {
-      nativeConfMap.put(planOptKey, "false")
-    }
-
     // Respect spark config spark.sql.orc.compression.codec for CH backend
     // TODO: consider compression or orc.compression in table options.
     val orcCompressionKey = 
CHConf.runtimeSettings("output_format_orc_compression_method")
diff --git 
a/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/RuntimeSettings.scala
 
b/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/RuntimeSettings.scala
index 140b09a9ab..4365b2987c 100644
--- 
a/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/RuntimeSettings.scala
+++ 
b/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/RuntimeSettings.scala
@@ -39,6 +39,17 @@ object RuntimeSettings {
   // scalastyle:on line.size.limit
 
   /** Gluten Configuration */
+  // scalastyle:off line.size.limit
+  val COLLECT_METRICS =
+    buildConf(runtimeSettings("collect_metrics"))
+      .doc(s"""If true, we need disable query_plan_enable_optimizations, 
otherwise clickhouse optimize the query plan
+              |and cause collecting metrics failed.
+              |see 
https://clickhouse.com/docs/en/operations/settings/settings#query_plan_enable_optimizations
+              |""".stripMargin)
+      .booleanConf
+      .createWithDefault(true)
+  // scalastyle:on line.size.limit
+
   val NATIVE_WRITE_RESERVE_PARTITION_COLUMNS =
     buildConf(runtimeSettings("gluten.write.reserve_partition_columns"))
       .doc("Whether reserve partition columns for Native write or not, default 
is false")
diff --git 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/tpch/GlutenClickHouseTPCHSaltNullParquetSuite.scala
 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/tpch/GlutenClickHouseTPCHSaltNullParquetSuite.scala
index 6feb1e8806..361797c97d 100644
--- 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/tpch/GlutenClickHouseTPCHSaltNullParquetSuite.scala
+++ 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/tpch/GlutenClickHouseTPCHSaltNullParquetSuite.scala
@@ -17,7 +17,7 @@
 package org.apache.gluten.execution.tpch
 
 import org.apache.gluten.GlutenConfig
-import org.apache.gluten.backendsapi.clickhouse.CHConf
+import org.apache.gluten.backendsapi.clickhouse.{CHConf, RuntimeSettings}
 import org.apache.gluten.execution._
 import org.apache.gluten.execution.GlutenPlan
 
@@ -1419,12 +1419,11 @@ class GlutenClickHouseTPCHSaltNullParquetSuite extends 
GlutenClickHouseTPCHAbstr
       queriesResults: String = queriesResults,
       compareResult: Boolean = true,
       noFallBack: Boolean = true)(customCheck: DataFrame => Unit): Unit = {
-    val confName = CHConf.runtimeSettings("query_plan_enable_optimizations")
 
-    withSQLConf((confName, "true")) {
+    withSQLConf((RuntimeSettings.COLLECT_METRICS.key, "false")) {
       compareTPCHQueryAgainstVanillaSpark(queryNum, tpchQueries, customCheck, 
noFallBack)
     }
-    withSQLConf((confName, "false")) {
+    withSQLConf((RuntimeSettings.COLLECT_METRICS.key, "true")) {
       compareTPCHQueryAgainstVanillaSpark(queryNum, tpchQueries, customCheck, 
noFallBack)
     }
   }
diff --git a/cpp-ch/clickhouse.version b/cpp-ch/clickhouse.version
index 83bbbf9a21..87fefef5cc 100644
--- a/cpp-ch/clickhouse.version
+++ b/cpp-ch/clickhouse.version
@@ -1,3 +1,3 @@
 CH_ORG=Kyligence
-CH_BRANCH=rebase_ch/20241228
-CH_COMMIT=bf8e58b57e9
+CH_BRANCH=rebase_ch/20250103
+CH_COMMIT=0523d6de564
diff --git a/cpp-ch/local-engine/Common/CHUtil.cpp 
b/cpp-ch/local-engine/Common/CHUtil.cpp
index c85104e5ae..ace3a515a2 100644
--- a/cpp-ch/local-engine/Common/CHUtil.cpp
+++ b/cpp-ch/local-engine/Common/CHUtil.cpp
@@ -80,6 +80,7 @@ extern const ServerSettingsDouble 
primary_index_cache_size_ratio;
 }
 namespace Setting
 {
+extern const SettingsMaxThreads max_threads;
 extern const SettingsUInt64 prefer_external_sort_block_bytes;
 extern const SettingsUInt64 max_bytes_before_external_sort;
 extern const SettingsDouble max_bytes_ratio_before_external_sort;
@@ -635,6 +636,9 @@ void BackendInitializerUtil::initSettings(const 
SparkConfigs::ConfigMap & spark_
     settings.set("input_format_parquet_enable_row_group_prefetch", false);
     settings.set("output_format_parquet_use_custom_encoder", false);
 
+    // TODO: we need set Setting::max_threads to 1 by default, but now we 
can't get correct metrics for the some query if we set it to 1.
+    // settings[Setting::max_threads] = 1;
+
     /// Set false after https://github.com/ClickHouse/ClickHouse/pull/71539
     /// if true, we can't get correct metrics for the query
     settings[Setting::query_plan_merge_filters] = false;
diff --git a/cpp-ch/local-engine/Common/GlutenConfig.h 
b/cpp-ch/local-engine/Common/GlutenConfig.h
index c0fa53e630..1aefca1bc4 100644
--- a/cpp-ch/local-engine/Common/GlutenConfig.h
+++ b/cpp-ch/local-engine/Common/GlutenConfig.h
@@ -172,8 +172,8 @@ public:
 
 namespace PathConfig
 {
-inline constexpr const char * USE_CURRENT_DIRECTORY_AS_TMP = 
"use_current_directory_as_tmp";
-inline constexpr const char * DEFAULT_TEMP_FILE_PATH = "/tmp/libch";
+inline constexpr auto USE_CURRENT_DIRECTORY_AS_TMP = 
"use_current_directory_as_tmp";
+inline constexpr auto DEFAULT_TEMP_FILE_PATH = "/tmp/libch";
 };
 
 /// Configurations for spark.sql.
diff --git a/cpp-ch/local-engine/Common/GlutenSettings.cpp 
b/cpp-ch/local-engine/Common/GlutenSettings.cpp
index ab015b5636..42451c3ed8 100644
--- a/cpp-ch/local-engine/Common/GlutenSettings.cpp
+++ b/cpp-ch/local-engine/Common/GlutenSettings.cpp
@@ -18,6 +18,7 @@
 
 #include <Core/Settings.h>
 #include <Interpreters/Context.h>
+#include <Processors/QueryPlan/Optimizations/QueryPlanOptimizationSettings.h>
 #include <Common/GlutenConfig.h>
 
 using namespace DB;
@@ -33,10 +34,13 @@ bool tryGetString(const DB::Settings & settings, 
std::string_view name, std::str
     }
     return false;
 }
-bool settingsEqual(const DB::Settings & settings, std::string_view name, const 
std::string & value)
+bool settingsEqual(
+    const DB::Settings & settings, std::string_view name, const std::string & 
value, const std::optional<std::string> & default_value)
 {
     if (DB::Field field; settings.tryGet(name, field))
         return field.safeGet<String>() == value;
+    if (default_value.has_value())
+        return *default_value == value;
     return false;
 }
 void updateSettings(const DB::ContextMutablePtr & context, std::string_view 
plan)
diff --git a/cpp-ch/local-engine/Common/GlutenSettings.h 
b/cpp-ch/local-engine/Common/GlutenSettings.h
index 99c01368b4..153bb7c6b5 100644
--- a/cpp-ch/local-engine/Common/GlutenSettings.h
+++ b/cpp-ch/local-engine/Common/GlutenSettings.h
@@ -67,7 +67,16 @@ namespace local_engine
 // workaround for tryGetString
 
 bool tryGetString(const DB::Settings & settings, std::string_view name, 
std::string & value);
-bool settingsEqual(const DB::Settings & settings, std::string_view name, const 
std::string & value);
+bool settingsEqual(
+    const DB::Settings & settings,
+    std::string_view name,
+    const std::string & value,
+    const std::optional<std::string> & default_value = std::nullopt);
 void updateSettings(const DB::ContextMutablePtr &, std::string_view);
 
+namespace RuntimeSettings
+{
+inline constexpr auto COLLECT_METRICS = "collect_metrics";
+inline constexpr auto COLLECT_METRICS_DEFAULT = "true";
+}
 } // namespace local_engine
diff --git a/cpp-ch/local-engine/Common/PlanUtil.cpp 
b/cpp-ch/local-engine/Common/PlanUtil.cpp
index 948cf35a5a..ebc3b6da3d 100644
--- a/cpp-ch/local-engine/Common/PlanUtil.cpp
+++ b/cpp-ch/local-engine/Common/PlanUtil.cpp
@@ -36,7 +36,7 @@ namespace local_engine::PlanUtil
 
 std::string explainPlan(const DB::QueryPlan & plan)
 {
-    constexpr DB::QueryPlan::ExplainPlanOptions buf_opt{
+    constexpr DB::ExplainPlanOptions buf_opt{
         .header = true,
         .actions = true,
         .indexes = true,
diff --git a/cpp-ch/local-engine/Operator/BranchStep.cpp 
b/cpp-ch/local-engine/Operator/BranchStep.cpp
index 5e379ae9d4..c52b14420c 100644
--- a/cpp-ch/local-engine/Operator/BranchStep.cpp
+++ b/cpp-ch/local-engine/Operator/BranchStep.cpp
@@ -137,7 +137,7 @@ public:
 
 private:
     size_t num_streams;
-    void updateOutputHeader() override {};
+    void updateOutputHeader() override { };
 };
 
 DB::QueryPlanPtr BranchStepHelper::createSubPlan(const DB::Block & header, 
size_t num_streams)
@@ -156,7 +156,7 @@ DB::QueryPlanPtr BranchStepHelper::createSubPlan(const 
DB::Block & header, size_
 }
 
 StaticBranchStep::StaticBranchStep(
-    DB::ContextPtr context_, const DB::Block & header_, size_t branches_, 
size_t sample_rows_, BranchSelector selector_)
+    const DB::ContextPtr & context_, const DB::Block & header_, size_t 
branches_, size_t sample_rows_, BranchSelector selector_)
     : DB::ITransformingStep(header_, header_, getTraits())
     , context(context_)
     , header(header_)
@@ -168,7 +168,7 @@ StaticBranchStep::StaticBranchStep(
 
 void StaticBranchStep::transformPipeline(DB::QueryPipelineBuilder & pipeline, 
const DB::BuildQueryPipelineSettings & settings)
 {
-    auto build_transform = [&](DB::OutputPortRawPtrs child_outputs) -> 
DB::Processors
+    auto build_transform = [&](const DB::OutputPortRawPtrs & child_outputs) -> 
DB::Processors
     {
         DB::Processors new_processors;
         for (auto & output : child_outputs)
@@ -195,8 +195,9 @@ void StaticBranchStep::updateOutputHeader()
 {
 }
 
-UniteBranchesStep::UniteBranchesStep(const DB::Block & header_, 
std::vector<DB::QueryPlanPtr> && branch_plans_, size_t num_streams_)
-    : DB::ITransformingStep(header_, branch_plans_[0]->getCurrentHeader(), 
getTraits()), header(header_)
+UniteBranchesStep::UniteBranchesStep(
+    const DB::ContextPtr & context_, const DB::Block & header_, 
std::vector<DB::QueryPlanPtr> && branch_plans_, size_t num_streams_)
+    : DB::ITransformingStep(header_, branch_plans_[0]->getCurrentHeader(), 
getTraits()), context(context_), header(header_)
 {
     branch_plans.swap(branch_plans_);
     size_t branches = branch_plans.size();
@@ -217,11 +218,11 @@ void 
UniteBranchesStep::transformPipeline(DB::QueryPipelineBuilder & pipeline, c
                 child_outputs.size(),
                 branch_plans.size());
         }
-        for (auto output : child_outputs)
+        for (auto * output : child_outputs)
         {
             auto & branch_plan = branch_plans[branch_index];
-            DB::QueryPlanOptimizationSettings optimization_settings;
-            DB::BuildQueryPipelineSettings build_settings;
+            DB::QueryPlanOptimizationSettings optimization_settings{context};
+            DB::BuildQueryPipelineSettings build_settings{context};
             DB::QueryPlanResourceHolder resource_holder;
 
             auto pipeline_builder = 
branch_plan->buildQueryPipeline(optimization_settings, build_settings);
diff --git a/cpp-ch/local-engine/Operator/BranchStep.h 
b/cpp-ch/local-engine/Operator/BranchStep.h
index fd2203aae8..ef3d69e5c6 100644
--- a/cpp-ch/local-engine/Operator/BranchStep.h
+++ b/cpp-ch/local-engine/Operator/BranchStep.h
@@ -42,7 +42,7 @@ class StaticBranchStep : public DB::ITransformingStep
 public:
     using BranchSelector = std::function<size_t(const std::list<DB::Chunk> &)>;
     explicit StaticBranchStep(
-        DB::ContextPtr context_, const DB::Block & header, size_t branches, 
size_t sample_rows, BranchSelector selector);
+        const DB::ContextPtr & context_, const DB::Block & header, size_t 
branches, size_t sample_rows, BranchSelector selector);
     ~StaticBranchStep() override = default;
 
     String getName() const override { return "StaticBranchStep"; }
@@ -67,7 +67,8 @@ private:
 class UniteBranchesStep : public DB::ITransformingStep
 {
 public:
-    explicit UniteBranchesStep(const DB::Block & header_, 
std::vector<DB::QueryPlanPtr> && branch_plans_, size_t num_streams_);
+    explicit UniteBranchesStep(
+        const DB::ContextPtr & context_, const DB::Block & header_, 
std::vector<DB::QueryPlanPtr> && branch_plans_, size_t num_streams_);
     ~UniteBranchesStep() override = default;
 
     String getName() const override { return "UniteBranchesStep"; }
@@ -76,6 +77,7 @@ public:
     void describePipeline(DB::IQueryPlanStep::FormatSettings & settings) const 
override;
 
 private:
+    DB::ContextPtr context;
     DB::Block header;
     std::vector<DB::QueryPlanPtr> branch_plans;
     size_t num_streams;
diff --git a/cpp-ch/local-engine/Parser/RelParsers/GroupLimitRelParser.cpp 
b/cpp-ch/local-engine/Parser/RelParsers/GroupLimitRelParser.cpp
index 8306346827..b43c8064b3 100644
--- a/cpp-ch/local-engine/Parser/RelParsers/GroupLimitRelParser.cpp
+++ b/cpp-ch/local-engine/Parser/RelParsers/GroupLimitRelParser.cpp
@@ -245,7 +245,7 @@ DB::QueryPlanPtr AggregateGroupLimitRelParser::parse(
     std::vector<DB::QueryPlanPtr> branch_plans;
     branch_plans.emplace_back(std::move(aggregation_plan));
     branch_plans.emplace_back(std::move(window_plan));
-    auto unite_branches_step = 
std::make_unique<UniteBranchesStep>(branch_in_header, std::move(branch_plans), 
1);
+    auto unite_branches_step = 
std::make_unique<UniteBranchesStep>(getContext(), branch_in_header, 
std::move(branch_plans), 1);
     unite_branches_step->setStepDescription("Unite TopK branches");
     steps.push_back(unite_branches_step.get());
 
diff --git a/cpp-ch/local-engine/Parser/RelParsers/JoinRelParser.cpp 
b/cpp-ch/local-engine/Parser/RelParsers/JoinRelParser.cpp
index 7c5aeb23b9..3db111b6d4 100644
--- a/cpp-ch/local-engine/Parser/RelParsers/JoinRelParser.cpp
+++ b/cpp-ch/local-engine/Parser/RelParsers/JoinRelParser.cpp
@@ -599,8 +599,8 @@ bool JoinRelParser::applyJoinFilter(
             return false;
         auto mixed_join_expressions_actions = expressionsToActionsDAG({expr}, 
mixed_header);
         mixed_join_expressions_actions.removeUnusedActions();
-        table_join.getMixedJoinExpression() = 
std::make_shared<DB::ExpressionActions>(
-            std::move(mixed_join_expressions_actions), 
ExpressionActionsSettings::fromContext(context));
+        table_join.getMixedJoinExpression()
+            = 
std::make_shared<DB::ExpressionActions>(std::move(mixed_join_expressions_actions),
 ExpressionActionsSettings(context));
     }
     else
     {
diff --git a/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp 
b/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp
index f3a9c3c901..e1733e915a 100644
--- a/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp
+++ b/cpp-ch/local-engine/Parser/SerializedPlanParser.cpp
@@ -64,7 +64,6 @@ namespace DB
 {
 namespace Setting
 {
-extern const SettingsBool query_plan_enable_optimizations;
 extern const SettingsUInt64 priority;
 }
 namespace ErrorCodes
@@ -276,7 +275,8 @@ QueryPlanPtr SerializedPlanParser::parseOp(const 
substrait::Rel & rel, std::list
 
     std::vector<DB::IQueryPlanStep *> steps = rel_parser->getSteps();
 
-    if 
(!parser_context->queryContext()->getSettingsRef()[Setting::query_plan_enable_optimizations])
+    if (const auto & settings = 
parser_context->queryContext()->getSettingsRef();
+        settingsEqual(settings, RuntimeSettings::COLLECT_METRICS, "true", 
{RuntimeSettings::COLLECT_METRICS_DEFAULT}))
     {
         if (rel.rel_type_case() == substrait::Rel::RelTypeCase::kRead)
         {
@@ -303,8 +303,13 @@ DB::QueryPipelineBuilderPtr 
SerializedPlanParser::buildQueryPipeline(DB::QueryPl
         IAST::QueryKind::Select,
         settings,
         0);
-    const QueryPlanOptimizationSettings optimization_settings{.optimize_plan = 
settings[Setting::query_plan_enable_optimizations]};
-    BuildQueryPipelineSettings build_settings = 
BuildQueryPipelineSettings::fromContext(context);
+    QueryPlanOptimizationSettings optimization_settings{context};
+
+    // TODO: set optimize_plan to true when metrics could be collected while 
ch query plan optimization is enabled.
+    if (settingsEqual(settings, RuntimeSettings::COLLECT_METRICS, "true", 
{RuntimeSettings::COLLECT_METRICS_DEFAULT}))
+        optimization_settings.optimize_plan = false;
+
+    BuildQueryPipelineSettings build_settings = 
BuildQueryPipelineSettings{context};
     build_settings.process_list_element = query_status;
     build_settings.progress_callback = nullptr;
     return query_plan.buildQueryPipeline(optimization_settings, 
build_settings);
diff --git a/cpp-ch/local-engine/Parser/scalar_function_parser/arrayExcept.cpp 
b/cpp-ch/local-engine/Parser/scalar_function_parser/arrayExcept.cpp
index 18b4f69aa4..e041985947 100644
--- a/cpp-ch/local-engine/Parser/scalar_function_parser/arrayExcept.cpp
+++ b/cpp-ch/local-engine/Parser/scalar_function_parser/arrayExcept.cpp
@@ -74,7 +74,7 @@ public:
         NamesAndTypesList lambda_arguments_names_and_types;
         
lambda_arguments_names_and_types.emplace_back(x_in_lambda->result_name, 
x_in_lambda->result_type);
         DB::Names required_column_names = 
lambda_actions_dag.getRequiredColumnsNames();
-        auto expression_actions_settings = 
DB::ExpressionActionsSettings::fromContext(getContext(), 
DB::CompileExpressions::yes);
+        auto expression_actions_settings = 
DB::ExpressionActionsSettings{getContext(), DB::CompileExpressions::yes};
         auto function_capture = 
std::make_shared<FunctionCaptureOverloadResolver>(
             std::move(lambda_actions_dag),
             expression_actions_settings,
diff --git a/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRemove.cpp 
b/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRemove.cpp
index 430c3d1627..fdd76b271d 100644
--- a/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRemove.cpp
+++ b/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRemove.cpp
@@ -71,7 +71,7 @@ public:
         NamesAndTypesList lambda_arguments_names_and_types;
         
lambda_arguments_names_and_types.emplace_back(x_in_lambda->result_name, 
x_in_lambda->result_type);
         DB::Names required_column_names = 
lambda_actions_dag.getRequiredColumnsNames();
-        auto expression_actions_settings = 
DB::ExpressionActionsSettings::fromContext(getContext(), 
DB::CompileExpressions::yes);
+        auto expression_actions_settings = 
DB::ExpressionActionsSettings{getContext(), DB::CompileExpressions::yes};
         auto function_capture = 
std::make_shared<FunctionCaptureOverloadResolver>(
             std::move(lambda_actions_dag),
             expression_actions_settings,
diff --git a/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRepeat.cpp 
b/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRepeat.cpp
index 348917f998..0c20296a2e 100644
--- a/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRepeat.cpp
+++ b/cpp-ch/local-engine/Parser/scalar_function_parser/arrayRepeat.cpp
@@ -71,7 +71,7 @@ public:
         NamesAndTypesList lambda_arguments_names_and_types;
         
lambda_arguments_names_and_types.emplace_back(x_in_lambda->result_name, 
x_in_lambda->result_type);
         DB::Names required_column_names = 
lambda_actions_dag.getRequiredColumnsNames();
-        auto expression_actions_settings = 
DB::ExpressionActionsSettings::fromContext(getContext(), 
DB::CompileExpressions::yes);
+        auto expression_actions_settings = 
DB::ExpressionActionsSettings{getContext(), DB::CompileExpressions::yes};
         auto function_capture = 
std::make_shared<FunctionCaptureOverloadResolver>(
             std::move(lambda_actions_dag),
             expression_actions_settings,
diff --git 
a/cpp-ch/local-engine/Parser/scalar_function_parser/lambdaFunction.cpp 
b/cpp-ch/local-engine/Parser/scalar_function_parser/lambdaFunction.cpp
index 556474397b..79f3a3784a 100644
--- a/cpp-ch/local-engine/Parser/scalar_function_parser/lambdaFunction.cpp
+++ b/cpp-ch/local-engine/Parser/scalar_function_parser/lambdaFunction.cpp
@@ -130,7 +130,7 @@ public:
                 captured_column_names.push_back(required_column_name);
             }
         }
-        auto expression_actions_settings = 
DB::ExpressionActionsSettings::fromContext(getContext(), 
DB::CompileExpressions::yes);
+        auto expression_actions_settings = 
DB::ExpressionActionsSettings{getContext(), DB::CompileExpressions::yes};
         auto function_capture = 
std::make_shared<DB::FunctionCaptureOverloadResolver>(
             std::move(lambda_actions_dag),
             expression_actions_settings,
diff --git a/cpp-ch/local-engine/Storages/Cache/CacheManager.cpp 
b/cpp-ch/local-engine/Storages/Cache/CacheManager.cpp
index f30e78dc91..f6421d1b2d 100644
--- a/cpp-ch/local-engine/Storages/Cache/CacheManager.cpp
+++ b/cpp-ch/local-engine/Storages/Cache/CacheManager.cpp
@@ -132,7 +132,9 @@ Task CacheManager::cachePart(
                 1);
             QueryPlan plan;
             plan.addStep(std::move(read_step));
-            auto pipeline_builder = plan.buildQueryPipeline({}, {});
+            DB::QueryPlanOptimizationSettings optimization_settings{context};
+            DB::BuildQueryPipelineSettings build_settings{context};
+            auto pipeline_builder = 
plan.buildQueryPipeline(optimization_settings, build_settings);
             auto pipeline = 
QueryPipelineBuilder::getPipeline(std::move(*pipeline_builder.get()));
             PullingPipelineExecutor executor(pipeline);
             while (true)
diff --git a/cpp-ch/local-engine/tests/gtest_ch_functions.cpp 
b/cpp-ch/local-engine/tests/gtest_ch_functions.cpp
index c9bff195c5..fc094515a6 100644
--- a/cpp-ch/local-engine/tests/gtest_ch_functions.cpp
+++ b/cpp-ch/local-engine/tests/gtest_ch_functions.cpp
@@ -80,7 +80,7 @@ TEST(TestFunction, In)
     set->insertFromBlock(col1_set_block.getColumnsWithTypeAndName());
     set->finishInsert();
     PreparedSets::Hash empty;
-    auto future_set = std::make_shared<FutureSetFromStorage>(empty, 
std::move(set));
+    auto future_set = std::make_shared<FutureSetFromStorage>(empty, 
std::move(set), std::nullopt);
     //TODO: WHY? after https://github.com/ClickHouse/ClickHouse/pull/63723 we 
need pass 4 instead of 1
     auto arg = ColumnSet::create(4, future_set);
 
@@ -124,7 +124,7 @@ TEST(TestFunction, NotIn1)
     set->insertFromBlock(col1_set_block.getColumnsWithTypeAndName());
     set->finishInsert();
     PreparedSets::Hash empty;
-    auto future_set = std::make_shared<FutureSetFromStorage>(empty, 
std::move(set));
+    auto future_set = std::make_shared<FutureSetFromStorage>(empty, 
std::move(set), std::nullopt);
 
     //TODO: WHY? after https://github.com/ClickHouse/ClickHouse/pull/63723 we 
need pass 4 instead of 1
     auto arg = ColumnSet::create(4, future_set);
@@ -168,7 +168,7 @@ TEST(TestFunction, NotIn2)
     set->insertFromBlock(col1_set_block.getColumnsWithTypeAndName());
     set->finishInsert();
     PreparedSets::Hash empty;
-    auto future_set = std::make_shared<FutureSetFromStorage>(empty, 
std::move(set));
+    auto future_set = std::make_shared<FutureSetFromStorage>(empty, 
std::move(set), std::nullopt);
 
     //TODO: WHY? after https://github.com/ClickHouse/ClickHouse/pull/63723 we 
need pass 4 instead of 1
     auto arg = ColumnSet::create(4, future_set);
diff --git a/cpp-ch/local-engine/tests/gtest_ch_join.cpp 
b/cpp-ch/local-engine/tests/gtest_ch_join.cpp
index 5df5eaff8c..045d8d33c1 100644
--- a/cpp-ch/local-engine/tests/gtest_ch_join.cpp
+++ b/cpp-ch/local-engine/tests/gtest_ch_join.cpp
@@ -126,8 +126,8 @@ TEST(TestJoin, simple)
     }
     auto hash_join = std::make_shared<HashJoin>(join, 
right_plan.getCurrentHeader());
 
-    QueryPlanStepPtr join_step
-        = std::make_unique<JoinStep>(left_plan.getCurrentHeader(), 
right_plan.getCurrentHeader(), hash_join, 8192, 8192, 1,  NameSet{}, false, 
false);
+    QueryPlanStepPtr join_step = std::make_unique<JoinStep>(
+        left_plan.getCurrentHeader(), right_plan.getCurrentHeader(), 
hash_join, 8192, 8192, 1, NameSet{}, false, false);
 
     std::cerr << "join step:" << join_step->getOutputHeader().dumpStructure() 
<< std::endl;
 
@@ -143,7 +143,8 @@ TEST(TestJoin, simple)
         {NameWithAlias("colA", "colA"), NameWithAlias("colB", "colB"), 
NameWithAlias("colD", "colD"), NameWithAlias("colC", "colC")});
     QueryPlanStepPtr project_step = 
std::make_unique<ExpressionStep>(query_plan.getCurrentHeader(), 
std::move(project));
     query_plan.addStep(std::move(project_step));
-    auto pipeline = 
query_plan.buildQueryPipeline(QueryPlanOptimizationSettings(), 
BuildQueryPipelineSettings());
+    auto pipeline
+        = 
query_plan.buildQueryPipeline(QueryPlanOptimizationSettings{global_context}, 
BuildQueryPipelineSettings{global_context});
     auto executable_pipe = 
QueryPipelineBuilder::getPipeline(std::move(*pipeline));
     PullingPipelineExecutor executor(executable_pipe);
     auto res = pipeline->getHeader().cloneEmpty();
diff --git a/cpp-ch/local-engine/tests/json/gtest_local_engine_config.json 
b/cpp-ch/local-engine/tests/json/gtest_local_engine_config.json
index ea258487ff..5eaa473972 100644
--- a/cpp-ch/local-engine/tests/json/gtest_local_engine_config.json
+++ b/cpp-ch/local-engine/tests/json/gtest_local_engine_config.json
@@ -19,7 +19,6 @@
     "spark.hadoop.input.read.timeout": "180000",
     "spark.hadoop.fs.s3a.secret.key": "",
     
"spark.gluten.sql.columnar.backend.ch.runtime_config.hdfs.dfs_client_log_severity":
 "INFO",
-    
"spark.gluten.sql.columnar.backend.ch.runtime_settings.query_plan_enable_optimizations":
 "false",
     
"spark.gluten.sql.columnar.backend.ch.runtime_config.storage_configuration.disks.hdfs_cache.disk":
 "hdfs",
     
"spark.gluten.sql.columnar.backend.ch.runtime_config.storage_configuration.policies.__hdfs_main.volumes":
 "main",
     
"spark.gluten.sql.columnar.backend.ch.runtime_settings.max_bytes_before_external_sort":
 "5368709120",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to