mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-19 16:20:50 +00:00
Merge remote-tracking branch 'origin/master' into pr-local-plan
This commit is contained in:
commit
42d3cd2b91
2
contrib/curl
vendored
2
contrib/curl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit de7b3e89218467159a7af72d58cea8425946e97d
|
Subproject commit 83bedbd730d62b83744cc26fa0433d3f6e2e4cd6
|
@ -198,6 +198,7 @@ FiltersForTableExpressionMap collectFiltersForAnalysis(const QueryTreeNodePtr &
|
|||||||
auto & result_query_plan = planner.getQueryPlan();
|
auto & result_query_plan = planner.getQueryPlan();
|
||||||
|
|
||||||
auto optimization_settings = QueryPlanOptimizationSettings::fromContext(query_context);
|
auto optimization_settings = QueryPlanOptimizationSettings::fromContext(query_context);
|
||||||
|
optimization_settings.build_sets = false; // no need to build sets to collect filters
|
||||||
result_query_plan.optimize(optimization_settings);
|
result_query_plan.optimize(optimization_settings);
|
||||||
|
|
||||||
FiltersForTableExpressionMap res;
|
FiltersForTableExpressionMap res;
|
||||||
|
@ -16,7 +16,7 @@ void optimizeTreeFirstPass(const QueryPlanOptimizationSettings & settings, Query
|
|||||||
void optimizeTreeSecondPass(const QueryPlanOptimizationSettings & optimization_settings, QueryPlan::Node & root, QueryPlan::Nodes & nodes);
|
void optimizeTreeSecondPass(const QueryPlanOptimizationSettings & optimization_settings, QueryPlan::Node & root, QueryPlan::Nodes & nodes);
|
||||||
/// Third pass is used to apply filters such as key conditions and skip indexes to the storages that support them.
|
/// Third pass is used to apply filters such as key conditions and skip indexes to the storages that support them.
|
||||||
/// After that it add CreateSetsStep for the subqueries that has not be used in the filters.
|
/// After that it add CreateSetsStep for the subqueries that has not be used in the filters.
|
||||||
void optimizeTreeThirdPass(QueryPlan & plan, QueryPlan::Node & root, QueryPlan::Nodes & nodes);
|
void addStepsToBuildSets(QueryPlan & plan, QueryPlan::Node & root, QueryPlan::Nodes & nodes);
|
||||||
|
|
||||||
/// Optimization (first pass) is a function applied to QueryPlan::Node.
|
/// Optimization (first pass) is a function applied to QueryPlan::Node.
|
||||||
/// It can read and update subtree of specified node.
|
/// It can read and update subtree of specified node.
|
||||||
|
@ -75,6 +75,8 @@ struct QueryPlanOptimizationSettings
|
|||||||
String force_projection_name;
|
String force_projection_name;
|
||||||
bool optimize_use_implicit_projections = false;
|
bool optimize_use_implicit_projections = false;
|
||||||
|
|
||||||
|
bool build_sets = true;
|
||||||
|
|
||||||
static QueryPlanOptimizationSettings fromSettings(const Settings & from);
|
static QueryPlanOptimizationSettings fromSettings(const Settings & from);
|
||||||
static QueryPlanOptimizationSettings fromContext(ContextPtr from);
|
static QueryPlanOptimizationSettings fromContext(ContextPtr from);
|
||||||
};
|
};
|
||||||
|
@ -216,7 +216,7 @@ void optimizeTreeSecondPass(const QueryPlanOptimizationSettings & optimization_s
|
|||||||
optimization_settings.force_projection_name);
|
optimization_settings.force_projection_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void optimizeTreeThirdPass(QueryPlan & plan, QueryPlan::Node & root, QueryPlan::Nodes & nodes)
|
void addStepsToBuildSets(QueryPlan & plan, QueryPlan::Node & root, QueryPlan::Nodes & nodes)
|
||||||
{
|
{
|
||||||
Stack stack;
|
Stack stack;
|
||||||
stack.push_back({.node = &root});
|
stack.push_back({.node = &root});
|
||||||
|
@ -504,7 +504,8 @@ void QueryPlan::optimize(const QueryPlanOptimizationSettings & optimization_sett
|
|||||||
|
|
||||||
QueryPlanOptimizations::optimizeTreeFirstPass(optimization_settings, *root, nodes);
|
QueryPlanOptimizations::optimizeTreeFirstPass(optimization_settings, *root, nodes);
|
||||||
QueryPlanOptimizations::optimizeTreeSecondPass(optimization_settings, *root, nodes);
|
QueryPlanOptimizations::optimizeTreeSecondPass(optimization_settings, *root, nodes);
|
||||||
QueryPlanOptimizations::optimizeTreeThirdPass(*this, *root, nodes);
|
if (optimization_settings.build_sets)
|
||||||
|
QueryPlanOptimizations::addStepsToBuildSets(*this, *root, nodes);
|
||||||
|
|
||||||
updateDataStreams(*root);
|
updateDataStreams(*root);
|
||||||
}
|
}
|
||||||
|
@ -410,7 +410,9 @@ class CI:
|
|||||||
num_batches=6,
|
num_batches=6,
|
||||||
),
|
),
|
||||||
JobNames.INTEGRATION_TEST_TSAN: CommonJobConfigs.INTEGRATION_TEST.with_properties(
|
JobNames.INTEGRATION_TEST_TSAN: CommonJobConfigs.INTEGRATION_TEST.with_properties(
|
||||||
required_builds=[BuildNames.PACKAGE_TSAN], num_batches=6
|
required_builds=[BuildNames.PACKAGE_TSAN],
|
||||||
|
num_batches=6,
|
||||||
|
timeout=9000, # the job timed out with default value (7200)
|
||||||
),
|
),
|
||||||
JobNames.INTEGRATION_TEST_ARM: CommonJobConfigs.INTEGRATION_TEST.with_properties(
|
JobNames.INTEGRATION_TEST_ARM: CommonJobConfigs.INTEGRATION_TEST.with_properties(
|
||||||
required_builds=[BuildNames.PACKAGE_AARCH64],
|
required_builds=[BuildNames.PACKAGE_AARCH64],
|
||||||
|
18
tests/queries/0_stateless/03232_pr_not_ready_set.sql
Normal file
18
tests/queries/0_stateless/03232_pr_not_ready_set.sql
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
SELECT
|
||||||
|
is_initial_query,
|
||||||
|
count() AS c,
|
||||||
|
replaceRegexpAll(query, '_data_(\\d+)_(\\d+)', '_data_') AS query
|
||||||
|
FROM system.query_log
|
||||||
|
WHERE (event_date >= yesterday()) AND (type = 'QueryFinish') AND (ignore(54, 0, ignore('QueryFinish', 11, toLowCardinality(toLowCardinality(11)), 11, 11, 11), 'QueryFinish', materialize(11), toUInt128(11)) IN (
|
||||||
|
SELECT query_id
|
||||||
|
FROM system.query_log
|
||||||
|
WHERE (current_database = currentDatabase()) AND (event_date >= yesterday()) AND (type = 'QueryFinish') AND (query LIKE '-- Parallel inner query alone%')
|
||||||
|
))
|
||||||
|
GROUP BY
|
||||||
|
is_initial_query,
|
||||||
|
query
|
||||||
|
ORDER BY
|
||||||
|
is_initial_query ASC,
|
||||||
|
c ASC,
|
||||||
|
query ASC
|
||||||
|
SETTINGS allow_experimental_parallel_reading_from_replicas=1, max_parallel_replicas=3, cluster_for_parallel_replicas='test_cluster_one_shard_three_replicas_localhost', parallel_replicas_for_non_replicated_merge_tree=1, parallel_replicas_min_number_of_rows_per_replica=10;
|
Loading…
Reference in New Issue
Block a user