Repository navigation
Conversation
… and signed zero The export called drop_duplicates, which counts two NaN values as equal and 0.0 as equal to -0.0. The engine's LinkedHashSet compares rows with Scala's ==, under which NaN equals nothing, and hashes doubles by their bits, so it keeps all of them. Select rows by the key the set operators already use. Closes apache#8974 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Automated Reviewer SuggestionsBased on the
|
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
|
| config | throughput | MB/s | latency | max Δ latest / 7d | |
|---|---|---|---|---|---|
| 🔴 | bs=10 sw=10 sl=64 | 372 | 0.227 | 26,373/33,008/33,008 us | 🔴 +15.8% / 🔴 +193.3% |
| 🔴 | bs=100 sw=10 sl=64 | 800 | 0.488 | 121,727/168,004/168,004 us | 🔴 +29.8% / 🔴 +124.4% |
| 🔴 | bs=1000 sw=10 sl=64 | 952 | 0.581 | 1,043,254/1,218,795/1,218,795 us | 🔴 +5.3% / 🔴 +72.5% |
Baseline details
Latest main 6a29c59 from same runner
| config | metric | PR | latest main | 7d avg | Δ latest | Δ 7d |
|---|---|---|---|---|---|---|
| bs=10 sw=10 sl=64 | throughput | 372 tuples/sec | 420 tuples/sec | 1,119 tuples/sec | -11.4% | -66.8% |
| bs=10 sw=10 sl=64 | MB/s | 0.227 MB/s | 0.256 MB/s | 0.683 MB/s | -11.3% | -66.8% |
| bs=10 sw=10 sl=64 | p50 | 26,373 us | 22,769 us | 8,992 us | +15.8% | +193.3% |
| bs=10 sw=10 sl=64 | p95 | 33,008 us | 32,485 us | 11,255 us | +1.6% | +193.3% |
| bs=10 sw=10 sl=64 | p99 | 33,008 us | 32,485 us | 13,808 us | +1.6% | +139.1% |
| bs=100 sw=10 sl=64 | throughput | 800 tuples/sec | 864 tuples/sec | 1,518 tuples/sec | -7.4% | -47.3% |
| bs=100 sw=10 sl=64 | MB/s | 0.488 MB/s | 0.527 MB/s | 0.927 MB/s | -7.4% | -47.3% |
| bs=100 sw=10 sl=64 | p50 | 121,727 us | 114,884 us | 68,504 us | +6.0% | +77.7% |
| bs=100 sw=10 sl=64 | p95 | 168,004 us | 129,435 us | 74,866 us | +29.8% | +124.4% |
| bs=100 sw=10 sl=64 | p99 | 168,004 us | 129,435 us | 89,939 us | +29.8% | +86.8% |
| bs=1000 sw=10 sl=64 | throughput | 952 tuples/sec | 962 tuples/sec | 1,569 tuples/sec | -1.0% | -39.3% |
| bs=1000 sw=10 sl=64 | MB/s | 0.581 MB/s | 0.587 MB/s | 0.957 MB/s | -1.0% | -39.3% |
| bs=1000 sw=10 sl=64 | p50 | 1,043,254 us | 1,029,443 us | 669,501 us | +1.3% | +55.8% |
| bs=1000 sw=10 sl=64 | p95 | 1,218,795 us | 1,157,686 us | 706,487 us | +5.3% | +72.5% |
| bs=1000 sw=10 sl=64 | p99 | 1,218,795 us | 1,157,686 us | 737,560 us | +5.3% | +65.2% |
Raw CSV
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,536.99,200,128000,372,0.227,26373.24,33007.50,33007.50
1,100,10,64,20,2500.19,2000,1280000,800,0.488,121727.33,168004.11,168004.11
2,1000,10,64,20,21011.36,20000,12800000,952,0.581,1043254.17,1218795.39,1218795.39… served script Distinct now keeps the rows the engine's HashSet keeps through _texera_set_select rather than drop_duplicates, so the export endpoint's spec looks for that call. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@carloea2 A friendly ping on this one; I've since added a test expecting Distinct's set select in the export. |
carloea2
left a comment
There was a problem hiding this comment.
DistinctOpDescSpec passes all 8 tests with the declared SetRowKeys helper supplied. WorkflowToPythonResourceSpec passes all 4 tests, and scalafmtCheckAll passes. NaN, null and signed-zero cases match the native distinct behavior. Keep the draft dependency on #8506.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What changes were proposed in this PR?
Distinct's exported Python called
drop_duplicates, which counts two NaN values as equal and 0.0 as equal to -0.0. The engine'sDistinctOpExeckeeps rows in aLinkedHashSetthat compares them with Scala's==, under which NaN equals nothing, and hashes each double by its bits, so 0.0 and -0.0 land apart. The export therefore emitted fewer rows than the run it came from.The export now selects rows with
_texera_set_select, the helper the set operators use: one key per row, equal exactly where the engine's rows are, keeping the first row of each key in input order.Any related issues, documentation, discussions?
Closes #8974. Depends on #8506, which adds
StandaloneHelpers.SetRowKeys; until it merges this branch does not compile.How was this PR tested?
DistinctOpDescSpecgains a test that runsDistinctOpExecand the exported Python over 1.0, NaN, 0.0, -0.0, null, 1.0, NaN, null, -0.0 and compares the rows in order. The engine keeps 6. The old export kept 4 and fails the test. It replaces the test that pinned the olddrop_duplicatesline. With #8506 applied, all 11 Distinct tests pass, and Distinct's verification run still matches.WorkflowToPythonResourceSpec, which looked fordrop_duplicatesin the served script, now looks for_texera_set_select.Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5.5)
🤖 Generated with Claude Code