Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support variable when seeking by id in match clause #5486

Merged
merged 4 commits into from
Apr 20, 2023

Conversation

yixinglu
Copy link
Contributor

@yixinglu yixinglu commented Apr 10, 2023

What type of PR is this?

  • bug
  • feature
  • enhancement

What problem(s) does this PR solve?

Issue(s) number:

#5509

Description:

The following query will execute full index scan even though the filter in where clause is from some specified vid list. it's very slow for these cases since nebula could not find a reasonable start point for path pattern.

with 'Tim Duncan' as vid match (v)--(v2) where id(v)==vid return *;

How do you solve it?

I add a new start point seeker in match planner to generate a argument plan node referencing the input data from other clause. this argument plan node can avoid to scan all index or vertices/edges.

In this PR, I restrict the usage of the seeker for the filter related to node and exclude the case that some variable is from current match path pattern, such as:

with 1 as vid match (v)--(v2) where id(v)==v2 return *;

The index selection for variable will be supported in next pr.

Special notes for your reviewer, ex. impact of this fix, design document, etc:

Checklist:

Tests:

  • Unit test(positive and negative cases)
  • Function test
  • Performance test
  • N/A

Affects:

  • Documentation affected (Please add the label if documentation needs to be modified.)
  • Incompatibility (If it breaks the compatibility, please describe it and add the label.)
  • If it's needed to cherry-pick (If cherry-pick to some branches is required, please label the destination version(s).)
  • Performance impacted: Consumes more CPU/Memory

Release notes:

Please confirm whether to be reflected in release notes and how to describe:

ex. Fixed the bug .....

@yixinglu yixinglu added the ready-for-testing PR: ready for the CI test label Apr 18, 2023
@yixinglu yixinglu changed the title Add more path pattern seeker for the case variable exists Support variable when seeking by id in match clause Apr 18, 2023
@yixinglu yixinglu force-pushed the opt2-didi branch 11 times, most recently from 2cfec05 to b6dba83 Compare April 19, 2023 05:47
@yixinglu yixinglu marked this pull request as ready for review April 19, 2023 09:16
@Sophie-Xie Sophie-Xie merged commit 7aeacd0 into vesoft-inc:master Apr 20, 2023
@yixinglu yixinglu deleted the opt2-didi branch April 20, 2023 05:59
yixinglu added a commit to yixinglu/nebula that referenced this pull request Sep 14, 2023
…esoft-inc#2776)

* Support variable when seeking by id in match clause vesoft-inc#5486

* Support variable when seeking by property index in match clause (vesoft-inc#5553)

* Support variable when seeking by prop index in match clause

* Rename

* Move the index query context construction outside of OptRule

* Move the optimizer utils to common graph util folder

* Eval argument values in index scan executor

* Fix bug

* refactor and fix error

* Update tck tests

---------

Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com>

* Resolve the conflicts

---------

Co-authored-by: Yee <2520865+yixinglu@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-for-testing PR: ready for the CI test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants