-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Refactor the process of symbols in optimizer. #4146
Refactor the process of symbols in optimizer. #4146
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good Job! Could this PR solve the optimization issue about match after the rules bug fixed?
if so, we could consider to cherry pick it into v3.1.0.
const OptGroup *dep = deps[i]; | ||
if (node->inputVar(i) != dep->outputVar()) { | ||
return false; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we could do more things than this input variable validation, such as check whether these new generated OptGroupNodes reference other nodes outside since we guarantee that all plan nodes of the new subplan couldn't access other plan nodes except the intput/output nodes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I this has been done in current implementation. All input variables of plan nodes in current transform result had been checed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed.
Could resolve the case mentioned in #3826 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
return false; | ||
} | ||
// Only use by father plan node | ||
if (node->inputVars()[i]->readBy.size() != 1) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's better to check whether the input variables are from outside plan. But it's ok to process like this now.
* Refactor the process of symbols in optimizer. * Fix variable shadowing. * Collect boundary from MatchResult directly. * Check variable in TransformResult don't referenced by outside plan nodes. Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com>
* Add SetUsageMessage For daemons (#4134) * fix the wrong regex pattern of scientific notation (#4136) * fix updatePart (#4139) * fix updatePart * fix format check Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com> * show DATA_BALANCE in job list (#4138) Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com> * fix disk fault recovery (#4131) * fix disk fault recovery * add ut Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com> * Refactor findpath (#4095) * optimize bfs * optimizer allpath * optimizer multi-shortestpath * optimizer multi shortest path * fix validate unit test * add some comment * fix error * fix bfs error * add comment * delete conjunct * add findpath unit test * delete useless file * delete log * remove check * multi thread executor * single shortest multi thread * add some testcases * add gflags * fix bfs error * address comment * Just report errorof property pruner in debug mode (#4142) Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com> * remove Atomic Edge (#4127) * try to remove Atomic Edge * remove some space * remove zone Co-authored-by: Doodle <13706157+critical27@users.noreply.github.com> * fix show tag/edge index status (#4148) * fix multiple match (#4143) Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com> * Refactor the process of symbols in optimizer. (#4146) * Refactor the process of symbols in optimizer. * Fix variable shadowing. * Collect boundary from MatchResult directly. * Check variable in TransformResult don't referenced by outside plan nodes. Co-authored-by: Sophie <84560950+Sophie-Xie@users.noreply.github.com> Co-authored-by: Alex Xing <90179377+SuperYoko@users.noreply.github.com> Co-authored-by: jie.wang <38901892+jievince@users.noreply.github.com> Co-authored-by: Doodle <13706157+critical27@users.noreply.github.com> Co-authored-by: liwenhui-soul <38217397+liwenhui-soul@users.noreply.github.com> Co-authored-by: panda-sheep <59197347+panda-sheep@users.noreply.github.com> Co-authored-by: jimingquan <mingquan.ji@vesoft.com> Co-authored-by: lionel.liu@vesoft.com <52276794+liuyu85cn@users.noreply.github.com> Co-authored-by: kyle.cao <kyle.cao@vesoft.com> Co-authored-by: shylock <33566796+Shylock-Hg@users.noreply.github.com>
OptGroup was refactored in vesoft-inc#4146
OptGroup was refactored in vesoft-inc#4146
delete: av->traverse->scanV add: project-> limit -> av->traverse->sv add: project-> av ->traverse->sv exclude optRule for buildPath in project.colums() Comments added lint: clang-format [WIP] Fixing regression when return e, e.foo.bar The limit info is lost in this case Fix after vesoft-inc#4146 OptGroup was refactored in vesoft-inc#4146 Removed GetEdgesTransformRule
delete: av->traverse->scanV add: project-> limit -> av->traverse->sv add: project-> av ->traverse->sv exclude optRule for buildPath in project.colums() Comments added lint: clang-format [WIP] Fixing regression when return e, e.foo.bar The limit info is lost in this case Fix after vesoft-inc#4146 OptGroup was refactored in vesoft-inc#4146 Removed GetEdgesTransformRule
* Stop scanV -> scanE optRule when buildPath delete: av->traverse->scanV add: project-> limit -> av->traverse->sv add: project-> av ->traverse->sv exclude optRule for buildPath in project.colums() Comments added lint: clang-format [WIP] Fixing regression when return e, e.foo.bar The limit info is lost in this case Fix after #4146 OptGroup was refactored in #4146 Removed GetEdgesTransformRule * Rebase on #4277 Remove useless AppendVertices As this rule only aplied for match ()-[e]->() return e limit 1 when 1. there is no index on e and 2. limit cluase exists, thus we could assert that AppendVertices will be removed by EliminateAppendVerticesRule // Tranformation: // Before: // +---------+---------+ // | Project | // +---------+---------+ // | // +---------+---------+ // | Limit | // +---------+---------+ // | // +---------+---------+ // | Traverse | // +---------+---------+ // | // +---------+---------+ // | ScanVertices | // +---------+---------+ // // After: // +---------+---------+ // | Project | // +---------+---------+ // | // +---------+---------+ // | Limit | // +---------+---------+ // | // +---------+---------+ // | Project | // +---------+---------+ // | // +---------+---------+ // | ScanEdges | // +---------+---------+ * Addressing Shylock-Hg's comment * Make linter happy * Fix after EliminateAppendVerticesRule merged and linting * Reusing functions in GetEdgesTransformRule * Addressing comment from Shylock-Hg & rebase Co-authored-by: cpw <13495049+CPWstatic@users.noreply.github.com>
* Stop scanV -> scanE optRule when buildPath delete: av->traverse->scanV add: project-> limit -> av->traverse->sv add: project-> av ->traverse->sv exclude optRule for buildPath in project.colums() Comments added lint: clang-format [WIP] Fixing regression when return e, e.foo.bar The limit info is lost in this case Fix after vesoft-inc#4146 OptGroup was refactored in vesoft-inc#4146 Removed GetEdgesTransformRule * Rebase on vesoft-inc#4277 Remove useless AppendVertices As this rule only aplied for match ()-[e]->() return e limit 1 when 1. there is no index on e and 2. limit cluase exists, thus we could assert that AppendVertices will be removed by EliminateAppendVerticesRule // Tranformation: // Before: // +---------+---------+ // | Project | // +---------+---------+ // | // +---------+---------+ // | Limit | // +---------+---------+ // | // +---------+---------+ // | Traverse | // +---------+---------+ // | // +---------+---------+ // | ScanVertices | // +---------+---------+ // // After: // +---------+---------+ // | Project | // +---------+---------+ // | // +---------+---------+ // | Limit | // +---------+---------+ // | // +---------+---------+ // | Project | // +---------+---------+ // | // +---------+---------+ // | ScanEdges | // +---------+---------+ * Addressing Shylock-Hg's comment * Make linter happy * Fix after EliminateAppendVerticesRule merged and linting * Reusing functions in GetEdgesTransformRule * Addressing comment from Shylock-Hg & rebase Co-authored-by: cpw <13495049+CPWstatic@users.noreply.github.com> Co-authored-by: Wey Gu <weyl.gu@gmail.com> Co-authored-by: cpw <13495049+CPWstatic@users.noreply.github.com>
What type of PR is this?
What problem(s) does this PR solve?
Issue(s) number:
Close #3826
Description:
Add two constraints to optimizer:
And add one implicit transform:
And some improvement:
How do you solve it?
Special notes for your reviewer, ex. impact of this fix, design document, etc:
Checklist:
Tests:
Affects:
Release notes:
Please confirm whether to be reflected in release notes and how to describe: