mirror of
https://github.com/hanzoai/datastore.git
synced 2026-09-26 13:55:07 +00:00
With `max_bytes_ratio_before_external_join` defaulting to `0.5`, the
performance comparison environment (which has memory limits configured)
now wraps hash joins in `SpillingHashJoin`. For perf tests that
specifically benchmark in-memory hash join behavior, this causes the
"new" side to use grace hash join while comparing against an "old"
master that still uses pure hash join, reporting them as regressions.
Set `max_bytes_ratio_before_external_join = 0` in the affected tests to
keep them measuring the same in-memory join code path as before:
* `parallel_hash_join_various.xml` — benchmarks `parallel_hash`.
* `join_convert_to_fixed_hash_table.xml` — benchmarks
`enable_join_fixed_hash_table_conversion` with `hash`/`grace_hash`.
* `join_runtime_filter.xml` — benchmarks runtime filter behavior.
* `join_used_flags.xml` — benchmarks `RIGHT JOIN` used-flag tracking.
* `tpch.xml` — keeps the TPC-H benchmark comparable across runs;
adds an inline `<settings>` block that overrides
`../benchmarks/tpc-h/settings.json`.
CI report: https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=104285&sha=c0886206419503145375bf5672cbe990b49ae40b&name_0=PR
PR: https://github.com/ClickHouse/ClickHouse/pull/104285
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
21 lines
1.2 KiB
XML
21 lines
1.2 KiB
XML
<test>
|
|
<settings>
|
|
<max_bytes_ratio_before_external_join>0</max_bytes_ratio_before_external_join>
|
|
</settings>
|
|
|
|
<create_query>CREATE TABLE test_join_used_flags (i64 Int64, i32 Int32) ENGINE = Memory</create_query>
|
|
<create_query>CREATE TABLE probe_used_flags (key Int64) ENGINE = Memory</create_query>
|
|
<create_query>CREATE TABLE build_used_flags (key Int64) ENGINE = Memory</create_query>
|
|
|
|
<fill_query>INSERT INTO test_join_used_flags SELECT number AS i64, rand32() AS i32 FROM numbers_mt(1500000)</fill_query>
|
|
<fill_query>INSERT INTO probe_used_flags SELECT number % 1111 FROM numbers(250000000)</fill_query>
|
|
<fill_query>INSERT INTO build_used_flags SELECT number FROM numbers(1000)</fill_query>
|
|
|
|
<query>SELECT l.i64, r.i64, l.i32, r.i32 FROM test_join_used_flags l RIGHT JOIN test_join_used_flags r USING i64 format Null</query>
|
|
<query>SELECT l.key, r.key FROM probe_used_flags l RIGHT JOIN build_used_flags r ON l.key = r.key FORMAT Null</query>
|
|
|
|
<drop_query>DROP TABLE IF EXISTS test_join_used_flags</drop_query>
|
|
<drop_query>DROP TABLE IF EXISTS probe_used_flags</drop_query>
|
|
<drop_query>DROP TABLE IF EXISTS build_used_flags</drop_query>
|
|
</test>
|