Use octet_length for Hyper, Umbra, CedarDB - #1376
Conversation
Switch Hyper, Umbra, and CedarDB to octet_length so Q27 and Q28 measure bytes, matching the intended ClickBench semantics while avoiding UTF-8 character scans when byte lengths are available from string offsets. Rationale: apache/datafusion#23086 Prior DataFusion change: ClickHouse#985
|
CC @toschmidt re the changes to Umbra Please let know if you disagree with those changes. Happy to back them out of this PR, if you don't want them |
Apply the same Q27 and Q28 byte-length semantics to the CedarDB and Hyper Parquet configurations so alternative configurations remain comparable with their main variants.
…uet-partitioned, hyper-parquet-single, umbra (c6a.4xlarge)
|
Results for Logs:
|
|
Results for Logs:
|
…uet-partitioned, hyper-parquet-single, umbra (c6a.2xlarge, c6a.4xlarge, c6a.large, c6a.metal, c6a.xlarge, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl, t3a.small)
|
Results for Logs:
|
|
Results for Logs:
|
|
Results for Logs:
|
|
The run of Logs:
|
Switch Hyper, Umbra, and CedarDB to octet_length so Q27 and Q28 measure bytes, matching the intended ClickBench semantics while avoiding UTF-8 character scans when byte lengths are available from string offsets.
The queries for ClickHouse use
length(URL)/length(Referer). In ClickHouse,lengthis byte-oriented (https://clickhouse.com/docs/sql-reference/functions/string-functions#length), in contrast tolengthUTF8. Given ClickHouse itself uses a byte-length, the intent of ClickBench was probably to measure bytes, not UTF8. Hyper / Umbra / CedarDB were accidentally using UTF8 lengths, since theirlengthfunction aligns with Postgres and nobody noticed the difference.Also see #981, #985