mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 16:12:01 +00:00
18c50c11b3
* feat: Preserve number of streams after evaluation the window functions to allow parallel stream processing * fix style * fix style * fix style * setting query_plan_preserve_num_streams_after_window_functions default true * fix tests by SETTINGS query_plan_preserve_num_streams_after_window_functions=0 * fix test references * Resize the streams after the last window function, to keep the order between WindowTransforms (and WindowTransform works on single stream anyway). * feat: Preserve number of streams after evaluation the window functions to allow parallel stream processing * fix style * fix style * fix style * setting query_plan_preserve_num_streams_after_window_functions default true * fix tests by SETTINGS query_plan_preserve_num_streams_after_window_functions=0 * fix test references * Resize the streams after the last window function, to keep the order between WindowTransforms (and WindowTransform works on single stream anyway). * add perf test * perf: change the dataset from 50M to 5M * rename query_plan_preserve_num_streams_after_window_functions -> query_plan_enable_multithreading_after_window_functions * update test reference * fix clang-tidy --------- Co-authored-by: Nikita Taranov <nikita.taranov@clickhouse.com>
70 lines
2.1 KiB
XML
70 lines
2.1 KiB
XML
<test>
|
|
<create_query>
|
|
CREATE TABLE
|
|
window_test(id Int64, value Int64, partition Int64, msg String)
|
|
Engine=MergeTree
|
|
ORDER BY id
|
|
</create_query>
|
|
|
|
<fill_query>
|
|
INSERT INTO window_test
|
|
SELECT number, rand(1) % 500, number % 3000, randomPrintableASCII(2) FROM numbers(5000000)
|
|
</fill_query>
|
|
|
|
<query>
|
|
SELECT id,
|
|
AVG(value) OVER (ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame1,
|
|
MAX(value) OVER (ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame2,
|
|
sipHash64(frame1),
|
|
sipHash64(frame2)
|
|
FROM window_test
|
|
</query>
|
|
|
|
<query>
|
|
SELECT id AS key,
|
|
sipHash64(sum(frame)) AS value
|
|
FROM (
|
|
SELECT id,
|
|
AVG(value) OVER (ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame
|
|
FROM window_test)
|
|
GROUP BY key
|
|
ORDER BY key, value
|
|
</query>
|
|
|
|
<query>
|
|
SELECT id % 100000 AS key,
|
|
sipHash64(sum(frame)) AS value
|
|
FROM (
|
|
SELECT id,
|
|
AVG(value) OVER (ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame
|
|
FROM window_test)
|
|
GROUP BY key
|
|
ORDER BY key, value
|
|
</query>
|
|
|
|
<query>
|
|
WITH 'xxxxyyyyxxxxyyyyxxxxyyyyxxxxyyyy' AS cipherKey
|
|
SELECT id,
|
|
AVG(value) OVER (ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame,
|
|
toString(frame) AS str,
|
|
encrypt('aes-256-ofb', str, cipherKey) AS enc,
|
|
decrypt('aes-256-ofb', str, cipherKey) AS dec
|
|
FROM window_test
|
|
</query>
|
|
|
|
<query>
|
|
SELECT id,
|
|
AVG(value) OVER (PARTITION by partition ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame
|
|
FROM window_test
|
|
ORDER BY id
|
|
</query>
|
|
|
|
<query>
|
|
SELECT DISTINCT AVG(value) OVER (PARTITION by partition ORDER BY id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS frame
|
|
FROM window_test
|
|
ORDER BY frame
|
|
</query>
|
|
|
|
<drop_query>DROP TABLE IF EXISTS window_test</drop_query>
|
|
</test>
|