2022-02-06 12:07:33 +00:00
|
|
|
-- { echo }
|
|
|
|
EXPLAIN PIPELINE SELECT sleep(1);
|
|
|
|
(Expression)
|
|
|
|
ExpressionTransform
|
|
|
|
(SettingQuotaAndLimits)
|
|
|
|
(ReadFromStorage)
|
|
|
|
SourceFromSingleChunk 0 → 1
|
|
|
|
SELECT sleep(1) SETTINGS log_processors_profiles=true, log_queries=1, log_queries_min_type='QUERY_FINISH';
|
|
|
|
0
|
|
|
|
SYSTEM FLUSH LOGS;
|
|
|
|
WITH
|
|
|
|
(
|
|
|
|
SELECT query_id
|
|
|
|
FROM system.query_log
|
|
|
|
WHERE current_database = currentDatabase() AND Settings['log_processors_profiles']='1'
|
|
|
|
) AS query_id_
|
|
|
|
SELECT
|
|
|
|
name,
|
|
|
|
multiIf(
|
|
|
|
-- ExpressionTransform executes sleep(),
|
|
|
|
-- so IProcessor::work() will spend 1 sec.
|
|
|
|
name = 'ExpressionTransform', elapsed_us>1e6,
|
|
|
|
-- SourceFromSingleChunk, that feed data to ExpressionTransform,
|
|
|
|
-- will feed first block and then wait in PortFull.
|
2022-02-27 10:52:27 +00:00
|
|
|
name = 'SourceFromSingleChunk', output_wait_elapsed_us>1e6,
|
2022-02-06 12:07:33 +00:00
|
|
|
-- NullSource/LazyOutputFormatLazyOutputFormat are the outputs
|
|
|
|
-- so they cannot starts to execute before sleep(1) will be executed.
|
2022-02-27 10:52:27 +00:00
|
|
|
input_wait_elapsed_us>1e6)
|
2022-02-06 12:07:33 +00:00
|
|
|
elapsed
|
|
|
|
FROM system.processors_profile_log
|
|
|
|
WHERE query_id = query_id_
|
|
|
|
ORDER BY name;
|
|
|
|
ExpressionTransform 1
|
|
|
|
LazyOutputFormat 1
|
|
|
|
LimitsCheckingTransform 1
|
|
|
|
NullSource 1
|
|
|
|
NullSource 1
|
|
|
|
SourceFromSingleChunk 1
|