diff --git a/src/graph/executor/algo/AllPathsExecutor.cpp b/src/graph/executor/algo/AllPathsExecutor.cpp index 0dd2cfba7ff..d5f1f9d5439 100644 --- a/src/graph/executor/algo/AllPathsExecutor.cpp +++ b/src/graph/executor/algo/AllPathsExecutor.cpp @@ -273,6 +273,12 @@ folly::Future AllPathsExecutor::buildPathMultiJobs() { }) .thenValue([this, conjunctPathTime](auto&& resps) { NG_RETURN_IF_ERROR(resps); + if (result_.rows.size() > limit_) { + result_.rows.resize(limit_); + } + if (offset_ != 0) { + result_.rows.erase(result_.rows.begin(), result_.rows.begin() + offset_); + } addState("conjunct_path_time", conjunctPathTime); return Status::OK(); }); @@ -557,12 +563,6 @@ folly::Future AllPathsExecutor::conjunctPath(std::vector& leftPa std::make_move_iterator(rows.begin()), std::make_move_iterator(rows.end())); } - if (result_.rows.size() > limit_) { - result_.rows.resize(limit_); - } - if (offset_ != 0) { - result_.rows.erase(result_.rows.begin(), result_.rows.begin() + offset_); - } return Status::OK(); }) .thenError(folly::tag_t{}, diff --git a/src/parser/scanner.lex b/src/parser/scanner.lex index ca3c1f3aaee..ba4e539c895 100644 --- a/src/parser/scanner.lex +++ b/src/parser/scanner.lex @@ -258,7 +258,7 @@ LABEL_FULL_WIDTH {CN_EN_FULL_WIDTH}{CN_EN_NUM_FULL_WIDTH}* "SHORTEST" { return TokenType::KW_SHORTEST; } "NOLOOP" { return TokenType::KW_NOLOOP; } "SHORTESTPATH" { return TokenType::KW_SHORTESTPATH; } -"AllSHORTESTPATHS" { return TokenType::KW_ALLSHORTESTPATHS; } +"ALLSHORTESTPATHS" { return TokenType::KW_ALLSHORTESTPATHS; } "OUT" { return TokenType::KW_OUT; } "BOTH" { return TokenType::KW_BOTH; } "SUBGRAPH" { return TokenType::KW_SUBGRAPH; } diff --git a/tests/tck/features/path/AllPath.IntVid.feature b/tests/tck/features/path/AllPath.IntVid.feature index 18ac5bc4d1c..4787c7b802b 100644 --- a/tests/tck/features/path/AllPath.IntVid.feature +++ b/tests/tck/features/path/AllPath.IntVid.feature @@ -125,6 +125,16 @@ Feature: Integer Vid All Path | <("Tony Parker")-[:like@0]->("Manu Ginobili")-[:like@0]->("Tim Duncan")> | | <("Tony Parker")-[:like@0]->("Tim Duncan")> | | <("Tony Parker")-[:like@0]->("Tim Duncan")-[:like@0]->("Manu Ginobili")-[:like@0]->("Tim Duncan")> | + When executing query: + """ + lookup on player where player.age>20 YIELD id(vertex) as vid + | go 1 step from $-.vid over * where "player" in labels($$) yield distinct id($$) as dst,$-.vid as src + | find noloop path from $-.src to $-.dst over * upto 1 step yield path as p | limit 10,10 + | yield count(*) + """ + Then the result should be, in any order, with relax comparison: + | count(*) | + | 10 | Scenario: Integer Vid [1] ALL PATH REVERSELY Given a graph with space named "nba_int_vid" diff --git a/tests/tck/features/path/AllPath.feature b/tests/tck/features/path/AllPath.feature index b17c6c4ef7b..596f8709b5d 100644 --- a/tests/tck/features/path/AllPath.feature +++ b/tests/tck/features/path/AllPath.feature @@ -279,6 +279,16 @@ Feature: All Path Then the result should be, in any order, with relax comparison: | count(*) | | 0 | + When executing query: + """ + lookup on player where player.age>20 YIELD id(vertex) as vid + | go 1 step from $-.vid over * where "player" in labels($$) yield distinct id($$) as dst,$-.vid as src + | find noloop path from $-.src to $-.dst over * upto 1 step yield path as p | limit 10,10 + | yield count(*) + """ + Then the result should be, in any order, with relax comparison: + | count(*) | + | 10 | Scenario: [1] ALL PATH REVERSELY When executing query: