Commit dadc21f
authored
### Rationale for this change
A rework of #40223 using a more systematic alternative.
### What changes are included in this PR?
Introduce a structure `MatchConstraint` for applying extra (and optional) matching constraint for kernel signature matching, in additional to simply input type checks.
Also implement two concrete `MatchConstraint`s for binary decimal arithmetic kernels, to suppress exact match even if the input types are OK, for example, by requiring all decimal must be of the same scale for `add` and `subtract`, and s1 >= s2 for `divide`.
This should also be a fundamental enhancement to further resolve similar issues like:
* #35843
* #39875
* #40911
* #41011
* #41336
(Haven't try each one of them. May do that if this PR gets merged.)
### Are these changes tested?
UT included.
### Are there any user-facing changes?
New public class `MatchConstraint`.
* GitHub Issue: #47287
Authored-by: Rossi Sun <[email protected]>
Signed-off-by: Rossi Sun <[email protected]>
1 parent 8509ca4 commit dadc21f
File tree
9 files changed
+271
-25
lines changed- cpp/src/arrow/compute
- kernels
9 files changed
+271
-25
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
410 | 410 | | |
411 | 411 | | |
412 | 412 | | |
413 | | - | |
| 413 | + | |
| 414 | + | |
414 | 415 | | |
415 | 416 | | |
416 | 417 | | |
417 | 418 | | |
418 | 419 | | |
419 | | - | |
420 | | - | |
| 420 | + | |
| 421 | + | |
421 | 422 | | |
422 | 423 | | |
423 | 424 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
308 | 308 | | |
309 | 309 | | |
310 | 310 | | |
311 | | - | |
| 311 | + | |
| 312 | + | |
312 | 313 | | |
313 | 314 | | |
314 | 315 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
475 | 475 | | |
476 | 476 | | |
477 | 477 | | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
478 | 546 | | |
479 | 547 | | |
480 | 548 | | |
481 | 549 | | |
482 | | - | |
| 550 | + | |
| 551 | + | |
483 | 552 | | |
484 | 553 | | |
485 | 554 | | |
| 555 | + | |
486 | 556 | | |
487 | 557 | | |
488 | 558 | | |
489 | 559 | | |
490 | | - | |
491 | | - | |
492 | | - | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
493 | 563 | | |
494 | | - | |
| 564 | + | |
495 | 565 | | |
496 | 566 | | |
497 | 567 | | |
| |||
526 | 596 | | |
527 | 597 | | |
528 | 598 | | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
529 | 602 | | |
530 | 603 | | |
531 | 604 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
348 | 348 | | |
349 | 349 | | |
350 | 350 | | |
351 | | - | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
352 | 373 | | |
353 | 374 | | |
354 | 375 | | |
| |||
357 | 378 | | |
358 | 379 | | |
359 | 380 | | |
360 | | - | |
| 381 | + | |
| 382 | + | |
361 | 383 | | |
362 | 384 | | |
363 | | - | |
364 | | - | |
365 | | - | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
366 | 388 | | |
367 | 389 | | |
368 | | - | |
| 390 | + | |
369 | 391 | | |
370 | 392 | | |
371 | 393 | | |
| |||
401 | 423 | | |
402 | 424 | | |
403 | 425 | | |
| 426 | + | |
404 | 427 | | |
405 | 428 | | |
406 | 429 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
307 | 307 | | |
308 | 308 | | |
309 | 309 | | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
310 | 361 | | |
311 | 362 | | |
312 | 363 | | |
| |||
419 | 470 | | |
420 | 471 | | |
421 | 472 | | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
422 | 502 | | |
423 | 503 | | |
424 | 504 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
598 | 598 | | |
599 | 599 | | |
600 | 600 | | |
601 | | - | |
602 | | - | |
603 | | - | |
604 | | - | |
605 | 601 | | |
606 | 602 | | |
607 | 603 | | |
| |||
627 | 623 | | |
628 | 624 | | |
629 | 625 | | |
630 | | - | |
631 | | - | |
632 | | - | |
633 | | - | |
634 | 626 | | |
635 | 627 | | |
636 | 628 | | |
| |||
669 | 661 | | |
670 | 662 | | |
671 | 663 | | |
| 664 | + | |
672 | 665 | | |
673 | 666 | | |
674 | 667 | | |
| 668 | + | |
675 | 669 | | |
676 | 670 | | |
677 | 671 | | |
678 | 672 | | |
| 673 | + | |
679 | 674 | | |
680 | 675 | | |
681 | 676 | | |
| |||
684 | 679 | | |
685 | 680 | | |
686 | 681 | | |
687 | | - | |
688 | | - | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
689 | 686 | | |
690 | 687 | | |
691 | 688 | | |
| |||
0 commit comments