andygrove commented on PR #26277:
URL: https://github.com/apache/datafusion/pull/26277#issuecomment-6222818656

   > The description cites `join_fuzz` for the bulk path, but I think the fuzz 
inputs rarely produce a run of more than one row.
   
   You were right. I counted the appends with a temporary counter. Across the 
21 joins of `test_inner_join_1k`, 74 of 2,253 appends were runs of more than 
one row, and none was cut by the output batch. The other Inner, Left, Right and 
Full cases were the same, 3–5% and none cut. The binary-key cases don't match 
at all, since their random 4–16 byte keys never collide.
   
   I added `make_staggered_batches_i32_with_key_range`, which 
`make_staggered_batches_i32` now calls with 100, and eight cases that draw the 
keys from `0..5` instead: 
`test_{inner,left,right,full}_join_1k_low_cardinality`, each with a `_filtered` 
variant. They use `JoinFuzzTestCase` and its batch sizes as they are. With 25 
distinct keys, each streamed row matches about 40 buffered rows. In each case 
about 30% of the appends are runs of more than one row, 14,000–19,000 runs are 
cut by the output batch, and 51,000–56,000 end at a buffered batch boundary 
with the group continuing in the next one. I added Right as well, since it 
takes the same path with the sides swapped.
   
   Their joins return about 40,000 rows, so each new case takes about 40 s of 
CPU in the `ci` profile, against 15–25 s for the existing 1k cases.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to