LegendPei opened a new pull request, #3039:
URL: https://github.com/apache/hugegraph/pull/3039

   <!-- 
     Thank you very much for contributing to Apache HugeGraph, we are happy 
that you want to help us improve it!
   
     Here are some tips for you:
       1. If this is your first time, please read the [contributing 
guidelines](https://github.com/apache/hugegraph/blob/master/CONTRIBUTING.md)
   
       2. If a PR fix/close an issue, type the message "close xxx" (xxx is the 
link of related 
   issue) in the content, GitHub will auto link it (Required)
   
       3. Name the PR title in "Google Commit Format", start with "feat | fix | 
perf | refactor | doc | chore", 
         such like: "feat(core): support the PageRank algorithm" or "fix: wrong 
break in the compute loop" (module is optional)
         skip it if you are unsure about which is the best component.
   
       4. One PR address one issue, better not to mix up multiple issues.
   
       5. Put an `x` in the `[ ]` to mark the item as CHECKED. `[x]` (or click 
it directly after 
   published)
   -->
   
   ## Purpose of the PR
   
   - close #2936
   
   <!--
   Please explain more context in this section, clarify why the changes are 
needed. 
   e.g:
   - If you propose a new API, clarify the use case for a new API.
   - If you fix a bug, you can clarify why it is a bug, and should be 
associated with an issue.
   -->
   
   This PR fixes a `NoIndexException` triggered by `match()` traversals when 
preceding `has()` filters contain index-required predicates such as `neq()` or 
range predicates but the related properties are not indexed.
   
   In this case, HugeGraph extracted these filters into `HugeGraphStep` and 
pushed them into backend `ConditionQuery`, causing backend index validation to 
reject the traversal before TinkerPop could evaluate the filters normally.
   
   
   ## Main Changes
   
   - Avoid extracting `HasStep` filters into `HugeGraphStep` when:
     - the following traversal step is `match()`, and
     - the `has()` predicate contains `neq`, `gt`, `gte`, `lt`, or `lte`.
   
   - Keep those filters in the traversal so they are evaluated by the normal 
TinkerPop filter path instead of being forced into backend index query planning.
   
   - Add a regression test covering the `match()` + no-index condition scenario 
from #2936.
   
   
   ## Verifying these changes
   
   <!-- Please pick the proper options below -->
   
   - [ ] Trivial rework / code cleanup without any test coverage. (No Need)
   - [ ] Already covered by existing tests, such as *(please modify tests 
here)*.
   - [ ] Need tests and can be verified as follows:
       - `mvn test -pl hugegraph-server/hugegraph-test -am -P core-test,rocksdb 
-Dtest=CountStrategyCoreTest#testMatchWithNoIndexConditionMatchesDirectTraversal
 -DfailIfNoTests=false`
       - `mvn test -pl hugegraph-server/hugegraph-test -am -P core-test,rocksdb 
-Dtest=CountStrategyCoreTest -DfailIfNoTests=false`
   
   
   ## Does this PR potentially affect the following parts?
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   - [ ]  Dependencies ([add/update 
license](https://hugegraph.apache.org/docs/contribution-guidelines/contribute/#321-check-licenses)
 info & 
[regenerate_known_dependencies.sh](../install-dist/scripts/dependency/regenerate_known_dependencies.sh))
 <!-- Don't forget to add/update the info in "LICENSE" & "NOTICE" files (both 
in root & dist module) -->
   - [ ]  Modify configurations
   - [ ]  The public API
   - [ ]  Other affects (typed here)
   - [ ]  Nope
   
   
   ## Documentation Status
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   - [ ]  `Doc - TODO` <!-- Your PR changes impact docs and you will update 
later -->
   - [ ]  `Doc - Done` <!-- Related docs have been already added or updated -->
   - [ ]  `Doc - No Need` <!-- Your PR changes don't impact/need docs -->
   


-- 
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