Repository navigation
Commit 910f993
authored
Report one-row Sequence arrays as sorted for any multiplier (#10602)
## Summary
- Tracking Issue: #10177
Closes #10579.
A one-row `Sequence` has no adjacent pair to compare, so it is sorted
and strictly sorted whatever its multiplier. Its constructor stats, its
`is_sorted` aggregate kernel and the generic sortedness helper answered
from the multiplier (or a cached hint) alone, so a negative multiplier
reported unsorted and a zero multiplier reported not strictly sorted.
## Changes
- `Sequence::stats` now takes the length and reports both flags as exact
`true` when it is at most 1. This covers `try_new`, `try_new_typed` and
slicing, which goes through `new_unchecked`.
- `SequenceIsSortedKernel` returns `true` for a one-row batch, so direct
aggregate execution agrees with the stats.
- `is_sorted_impl` checks `len() <= 1` before the cached statistics, so
a stale hint can't contradict it.
- `SerializedArray::decode` sets both flags to exact `true` for arrays
with at most one element after it restores the stored statistics. Files
written before this change can store the multiplier-only answer for
one-row sequences, and this makes the intrinsic fact win over those
historical hints.
New tests cover the typed and untyped constructors and a one-row slice
of a longer sequence (multipliers -1, 0 and 3), the kernel called
directly for strict and non-strict, decoding a one-row sequence whose
serialized hints say unsorted, and the generic helper with stale cached
stats. Apart from the positive-multiplier cases, they all fail on
`develop`.
## AI assistance
This PR was written by an AI coding agent working under my account
(code, tests and this description), and I'm the responsible human for
it. Points worth a reviewer's attention: the decode change in
`vortex-array/src/serde.rs` applies to every encoding, not only
`Sequence`, on the basis that any array with at most one element is
(strictly) sorted; and it overwrites the stored hint with exact `true`
rather than dropping it.
---------
Signed-off-by: Vincent <[email protected]>1 parent dfb3e92 commit 910f993
4 files changed
Lines changed: 193 additions & 32 deletions
File tree
- encodings/sequence/src
- compute
- vortex-array/src
- aggregate_fn/fns/is_sorted
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
456 | 456 | | |
457 | 457 | | |
458 | 458 | | |
459 | | - | |
460 | | - | |
461 | | - | |
462 | | - | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
463 | 470 | | |
464 | | - | |
465 | | - | |
| 471 | + | |
| 472 | + | |
466 | 473 | | |
467 | | - | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
468 | 480 | | |
469 | 481 | | |
470 | 482 | | |
| |||
495 | 507 | | |
496 | 508 | | |
497 | 509 | | |
498 | | - | |
| 510 | + | |
499 | 511 | | |
500 | 512 | | |
501 | 513 | | |
| |||
519 | 531 | | |
520 | 532 | | |
521 | 533 | | |
522 | | - | |
| 534 | + | |
523 | 535 | | |
524 | 536 | | |
525 | 537 | | |
| |||
542 | 554 | | |
543 | 555 | | |
544 | 556 | | |
545 | | - | |
| 557 | + | |
546 | 558 | | |
547 | 559 | | |
548 | 560 | | |
| |||
687 | 699 | | |
688 | 700 | | |
689 | 701 | | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
690 | 763 | | |
691 | 764 | | |
692 | 765 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
9 | 8 | | |
10 | | - | |
11 | 9 | | |
12 | 10 | | |
13 | 11 | | |
14 | 12 | | |
15 | 13 | | |
16 | 14 | | |
17 | 15 | | |
18 | | - | |
19 | | - | |
| 16 | + | |
20 | 17 | | |
21 | 18 | | |
22 | 19 | | |
| |||
35 | 32 | | |
36 | 33 | | |
37 | 34 | | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
48 | 38 | | |
49 | 39 | | |
50 | 40 | | |
| |||
54 | 44 | | |
55 | 45 | | |
56 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
85 | 91 | | |
86 | 92 | | |
87 | 93 | | |
88 | 94 | | |
89 | 95 | | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | 96 | | |
96 | 97 | | |
97 | 98 | | |
| |||
620 | 621 | | |
621 | 622 | | |
622 | 623 | | |
| 624 | + | |
| 625 | + | |
623 | 626 | | |
624 | 627 | | |
625 | 628 | | |
626 | 629 | | |
627 | 630 | | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
628 | 647 | | |
629 | 648 | | |
630 | 649 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
| |||
418 | 420 | | |
419 | 421 | | |
420 | 422 | | |
421 | | - | |
422 | | - | |
423 | | - | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
424 | 431 | | |
425 | 432 | | |
426 | 433 | | |
| |||
0 commit comments