starrocks icon indicating copy to clipboard operation
starrocks copied to clipboard

[BugFix] If the operator is AND, return the predicates that are not null for paimon

Open liaowanyou opened this issue 1 month ago • 8 comments

Why I'm doing:

For the following predicate: f0 = 44 and (case when f0 = 44 then f1 else f2) = 33, Paimon cannot parse the predicate (case when f0 = 44 then f1 else f2) = 33, and the predicate conversion returns null. Normally, the predicate f0 = 44 should be retained.

What I'm doing:

Fixes #issue

What type of PR is this:

  • [x] BugFix
  • [ ] Feature
  • [ ] Enhancement
  • [ ] Refactor
  • [ ] UT
  • [ ] Doc
  • [ ] Tool

Does this PR entail a change in behavior?

  • [] Yes, this PR will result in a change in behavior.
  • [x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

  • [ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
  • [ ] Parameter changes: default values, similar parameters but with different default values
  • [ ] Policy changes: use new policy to replace old one, functionality automatically enabled
  • [ ] Feature removed
  • [ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

  • [x] I have added test cases for my bug fix or my new feature
  • [ ] This pr needs user documentation (for new or modified features or behaviors)
    • [ ] I have added documentation for my new feature or new function
  • [ ] This is a backport pr

Bugfix cherry-pick branch check:

  • [x] I have checked the version labels which the pr will be auto-backported to the target branch
    • [x] 4.0
    • [x] 3.5
    • [x] 3.4
    • [x] 3.3

[!NOTE] Introduce context-aware predicate conversion that retains valid AND branches and correctly handles NOT; add targeted tests.

  • Paimon predicate conversion:
    • Introduce PaimonPredicateContext to carry parent CompoundPredicateOperator.
    • Update PaimonPredicateConverter to accept/use context and propagate it to children.
    • For AND, return the non-null side when the other side is non-convertible.
    • Under parent NOT, return null when a child is non-convertible; continue to ignore NOT LIKE.
  • Tests:
    • Add testOrWithFunction covering OR/AND combinations with non-convertible functions and NOT behavior.

Written by Cursor Bugbot for commit 008fbcd52d57c51c5f87bede331fd42b19e2dffa. This will update automatically on new commits. Configure here.

liaowanyou avatar Nov 27 '25 09:11 liaowanyou

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Nov 27 '25 09:11 CLAassistant

@cursor review

alvin-celerdata avatar Dec 01 '25 19:12 alvin-celerdata

@cursor review

alvin-celerdata avatar Dec 03 '25 17:12 alvin-celerdata

🧪 CI Insights

Here's what we observed from your CI run for 008fbcd5.

🟢 All jobs passed!

But CI Insights is watching 👀

mergify[bot] avatar Dec 05 '25 08:12 mergify[bot]

[Java-Extensions Incremental Coverage Report]

:white_check_mark: pass : 0 / 0 (0%)

github-actions[bot] avatar Dec 05 '25 08:12 github-actions[bot]

[FE Incremental Coverage Report]

:x: fail : 11 / 14 (78.57%)

file detail

path covered_line new_line coverage not_covered_line_detail
:large_blue_circle: com/starrocks/connector/paimon/PaimonPredicateConverter.java 11 14 78.57% [70, 119, 209]

github-actions[bot] avatar Dec 05 '25 08:12 github-actions[bot]

[BE Incremental Coverage Report]

:white_check_mark: pass : 0 / 0 (0%)

github-actions[bot] avatar Dec 05 '25 08:12 github-actions[bot]

@cursor review

alvin-celerdata avatar Dec 05 '25 17:12 alvin-celerdata