Skip to content

Commit

Permalink
fix fix
Browse files Browse the repository at this point in the history
  • Loading branch information
jievince committed Aug 30, 2022
1 parent 98bdd27 commit 4291c68
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 29 deletions.
6 changes: 3 additions & 3 deletions src/graph/planner/ngql/GoPlanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ SubPlan GoPlanner::nStepsPlan(SubPlan& startVidPlan) {

auto* start = StartNode::make(qctx);
PlanNode* scan = nullptr;
if (!goCtx_->joinInput) {
if (!goCtx_->joinInput && goCtx_->limits.empty()) {
auto* gd = GetDstBySrc::make(qctx, start, goCtx_->space.id);
gd->setSrc(goCtx_->from.src);
gd->setEdgeTypes(buildEdgeTypes());
Expand All @@ -460,7 +460,7 @@ SubPlan GoPlanner::nStepsPlan(SubPlan& startVidPlan) {
auto* sampleLimit = buildSampleLimit(scan);

PlanNode* getDst = nullptr;
if (!goCtx_->joinInput) {
if (!goCtx_->joinInput && goCtx_->limits.empty()) {
auto* dedup = Dedup::make(qctx, sampleLimit);
dedup->setOutputVar(goCtx_->vidsVar);
dedup->setColNames(goCtx_->colNames);
Expand Down Expand Up @@ -626,7 +626,7 @@ StatusOr<SubPlan> GoPlanner::transform(AstContext* astCtx) {
}

bool GoPlanner::isSimpleCase() {
if (goCtx_->joinDst || goCtx_->filter || !goCtx_->distinct) {
if (goCtx_->joinDst || goCtx_->filter || !goCtx_->distinct || !goCtx_->limits.empty()) {
return false;
}
auto& exprProps = goCtx_->exprProps;
Expand Down
22 changes: 22 additions & 0 deletions tests/tck/features/go/SimpleCase.feature
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,28 @@ Feature: Simple case
| 2 | GetDstBySrc | 1 | |
| 1 | Start | | |
| 0 | Start | | |
# Because GetDstBySrc doesn't support limit push down, so degenrate to GetNeighbors when the query contains limit/simple clause
When profiling query:
"""
GO 3 STEPS FROM "Tony Parker" OVER * YIELD DISTINCT id($$) LIMIT [100, 100, 100] | YIELD count(*)
"""
Then the result should be, in any order, with relax comparison:
| count(*) |
| 13 |
And the execution plan should be:
| id | name | dependencies | operator info |
| 11 | Aggregate | 10 | |
| 10 | Dedup | 9 | |
| 9 | Project | 12 | |
| 12 | Limit | 13 | |
| 13 | GetNeighbors | 6 | |
| 6 | Loop | 0 | {"loopBody": "5"} |
| 5 | Dedup | 4 | |
| 4 | Project | 14 | |
| 14 | Limit | 15 | |
| 15 | GetNeighbors | 1 | |
| 1 | Start | | |
| 0 | Start | | |

Scenario: go m to n steps yield distinct dst id
When profiling query:
Expand Down
52 changes: 26 additions & 26 deletions tests/tck/features/match/SingleShorestPath.feature
Original file line number Diff line number Diff line change
Expand Up @@ -66,34 +66,34 @@ Feature: single shortestPath
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})> |
When executing query:
"""
MATCH p = shortestPath( (a:player{age:30})-[e*..5]->(b:team) ) RETURN p
MATCH p = shortestPath( (a:player{age:30})-[e*..5]->(b:team) ) RETURN b, length(p)
"""
Then the result should be, in any order, with relax comparison:
| p |
| <("DeAndre Jordan" :player{age: 30, name: "DeAndre Jordan"})-[:serve@0 {end_year: 2019, start_year: 2019}]->("Knicks" :team{name: "Knicks"})> |
| <("DeAndre Jordan" :player{age: 30, name: "DeAndre Jordan"})-[:serve@0 {end_year: 2019, start_year: 2018}]->("Mavericks" :team{name: "Mavericks"})> |
| <("DeAndre Jordan" :player{age: 30, name: "DeAndre Jordan"})-[:serve@0 {end_year: 2018, start_year: 2008}]->("Clippers" :team{name: "Clippers"})> |
| <("Kevin Durant" :player{age: 30, name: "Kevin Durant"})-[:serve@0 {end_year: 2016, start_year: 2007}]->("Thunders" :team{name: "Thunders"})> |
| <("Kevin Durant" :player{age: 30, name: "Kevin Durant"})-[:serve@0 {end_year: 2019, start_year: 2016}]->("Warriors" :team{name: "Warriors"})> |
| <("Russell Westbrook" :player{age: 30, name: "Russell Westbrook"})-[:like@0 {likeness: 90}]->("James Harden" :player{age: 29, name: "James Harden"})-[:serve@0 {end_year: 2019, start_year: 2012}]->("Rockets" :team{name: "Rockets"})> |
| <("Russell Westbrook" :player{age: 30, name: "Russell Westbrook"})-[:serve@0 {end_year: 2019, start_year: 2008}]->("Thunders" :team{name: "Thunders"})> |
| <("Russell Westbrook" :player{age: 30, name: "Russell Westbrook"})-[:like@0 {likeness: 90}]->("Paul George" :player{age: 28, name: "Paul George"})-[:serve@0 {end_year: 2017, start_year: 2010}]->("Pacers" :team{name: "Pacers"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:serve@0 {end_year: 2014, start_year: 2010}]->("Heat" :team{name: "Heat"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:like@0 {likeness: 100}]->("Ray Allen" :player{age: 43, name: "Ray Allen"})-[:like@0 {likeness: 9}]->("Rajon Rondo" :player{age: 33, name: "Rajon Rondo"})-[:serve@0 {end_year: 2016, start_year: 2015}]->("Kings" :team{name: "Kings"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:serve@0 {end_year: 2019, start_year: 2018}]->("Lakers" :team{name: "Lakers"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("Carmelo Anthony" :player{age: 34, name: "Carmelo Anthony"})-[:serve@0 {end_year: 2017, start_year: 2011}]->("Knicks" :team{name: "Knicks"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:serve@0 {end_year: 2011, start_year: 2005}]->("Hornets" :team{name: "Hornets"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:like@0 {likeness: 100}]->("Ray Allen" :player{age: 43, name: "Ray Allen"})-[:like@0 {likeness: 9}]->("Rajon Rondo" :player{age: 33, name: "Rajon Rondo"})-[:serve@0 {end_year: 2015, start_year: 2014}]->("Mavericks" :team{name: "Mavericks"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:serve@0 {end_year: 2018, start_year: 2009}]->("Clippers" :team{name: "Clippers"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("Dwyane Wade" :player{age: 37, name: "Dwyane Wade"})-[:serve@0 {end_year: 2017, start_year: 2016}]->("Bulls" :team{name: "Bulls"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:like@0 {likeness: 100}]->("Ray Allen" :player{age: 43, name: "Ray Allen"})-[:serve@0 {end_year: 2003, start_year: 1996}]->("Bucks" :team{name: "Bucks"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("Carmelo Anthony" :player{age: 34, name: "Carmelo Anthony"})-[:serve@0 {end_year: 2011, start_year: 2003}]->("Nuggets" :team{name: "Nuggets"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:like@0 {likeness: 100}]->("Ray Allen" :player{age: 43, name: "Ray Allen"})-[:serve@0 {end_year: 2012, start_year: 2007}]->("Celtics" :team{name: "Celtics"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:like@0 {likeness: 100}]->("Ray Allen" :player{age: 43, name: "Ray Allen"})-[:like@0 {likeness: 9}]->("Rajon Rondo" :player{age: 33, name: "Rajon Rondo"})-[:serve@0 {end_year: 2018, start_year: 2017}]->("Pelicans" :team{name: "Pelicans"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:serve@0 {end_year: 2021, start_year: 2017}]->("Rockets" :team{name: "Rockets"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("Carmelo Anthony" :player{age: 34, name: "Carmelo Anthony"})-[:serve@0 {end_year: 2018, start_year: 2017}]->("Thunders" :team{name: "Thunders"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:serve@0 {end_year: 2019, start_year: 2018}]->("Pistons" :team{name: "Pistons"})> |
| <("Blake Griffin" :player{age: 30, name: "Blake Griffin"})-[:like@0 {likeness: -1}]->("Chris Paul" :player{age: 33, name: "Chris Paul"})-[:like@0 {likeness: 90}]->("LeBron James" :player{age: 34, name: "LeBron James"})-[:serve@0 {end_year: 2010, start_year: 2003}]->("Cavaliers" :team{name: "Cavaliers"})> |
| b | length(p) |
| ("Celtics":team{name:"Celtics"}) | 4 |
| ("Kings":team{name:"Kings"}) | 5 |
| ("Cavaliers":team{name:"Cavaliers"}) | 3 |
| ("Thunders":team{name:"Thunders"}) | 3 |
| ("Nuggets":team{name:"Nuggets"}) | 3 |
| ("Rockets":team{name:"Rockets"}) | 2 |
| ("Mavericks":team{name:"Mavericks"}) | 5 |
| ("Bucks":team{name:"Bucks"}) | 4 |
| ("Lakers":team{name:"Lakers"}) | 3 |
| ("Pistons":team{name:"Pistons"}) | 1 |
| ("Bulls":team{name:"Bulls"}) | 3 |
| ("Clippers":team{name:"Clippers"}) | 1 |
| ("Pelicans":team{name:"Pelicans"}) | 5 |
| ("Knicks":team{name:"Knicks"}) | 3 |
| ("Heat":team{name:"Heat"}) | 3 |
| ("Hornets":team{name:"Hornets"}) | 2 |
| ("Mavericks":team{name:"Mavericks"}) | 1 |
| ("Clippers":team{name:"Clippers"}) | 1 |
| ("Knicks":team{name:"Knicks"}) | 1 |
| ("Thunders":team{name:"Thunders"}) | 1 |
| ("Rockets":team{name:"Rockets"}) | 2 |
| ("Pacers":team{name:"Pacers"}) | 2 |
| ("Thunders":team{name:"Thunders"}) | 1 |
| ("Warriors":team{name:"Warriors"}) | 1 |
When executing query:
"""
MATCH p = shortestPath( (a:player{age:30})-[e*..5]->(b:team) )
Expand Down

0 comments on commit 4291c68

Please sign in to comment.