fix string partitioning edge case to avoid rabbit-holing into single-row partitions - #4617
Conversation
39784c6 to
82ee9cf
Compare
82ee9cf to
3f24f8a
Compare
…ingle-row partitions
3f24f8a to
ddbe834
Compare
| } | ||
| } | ||
|
|
||
| func TestStringMidpointRemainsValidUTF8(t *testing.T) { |
There was a problem hiding this comment.
wrapped this up into test above; since we are now checking ascii boundaries, most of these cases would no longer be hit, as they would be deemed unsplittable before then.
🔄 Flaky Test DetectedAnalysis: The flow/e2e suite hit the 20-minute package timeout because an unrelated test (TestApiPg/TestDropMissing) stalled for 5m34s, and only one matrix combo (mysql-gtid) failed while all others passed on the same commit — indicating an environmental/flaky timeout rather than a real bug. ✅ Automatically retrying the workflow |
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
Co-authored-by: Ilia Demianenko <ilia.demianenko@clickhouse.com>
❌ 2 Tests Failed:
View the top 2 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
🔄 Flaky Test DetectedAnalysis: Both failed jobs timed out identically waiting for BigQuery's initial snapshot (TestGenericBQ/Test_Simple_Flow, "UNEXPECTED STATUS TIMEOUT STATUS_SNAPSHOT") — a timeout in an external-service e2e test unrelated to the PR's QRep string-partitioning change, indicating transient BigQuery slowness rather than a real bug. ✅ Automatically retrying the workflow |
Follow up to #4522
Main thing to clean up is the edge case where if both start and end boundary string's first differing byte (the most significant byte for determining the midpoint) are below or above printable ascii, continuing with midpoint interpolation in the extreme case can result in generating a lot of single-row partitions, until we are left with one large final partition. Terminate early when this happens to avoid introducing unnecessary latency. It may still be a full table snapshot, but we don't want to generate a lot of meaningless partitions.