diff --git a/src/graph/optimizer/CMakeLists.txt b/src/graph/optimizer/CMakeLists.txt index 3b02be39f1a..2c1ac1d15c1 100644 --- a/src/graph/optimizer/CMakeLists.txt +++ b/src/graph/optimizer/CMakeLists.txt @@ -51,7 +51,6 @@ nebula_add_library( rule/GetEdgesTransformRule.cpp rule/PushLimitDownScanEdgesAppendVerticesRule.cpp rule/PushTopNDownIndexScanRule.cpp - rule/EliminateAppendVerticesRule.cpp rule/PushLimitDownScanEdgesRule.cpp rule/RemoveProjectDedupBeforeGetDstBySrcRule.cpp rule/PushFilterDownTraverseRule.cpp diff --git a/tests/tck/features/optimizer/EliminateAppendVerticesRule.feature b/tests/tck/features/optimizer/EliminateAppendVerticesRule.feature index 6c0521604d1..24dc1d66202 100644 --- a/tests/tck/features/optimizer/EliminateAppendVerticesRule.feature +++ b/tests/tck/features/optimizer/EliminateAppendVerticesRule.feature @@ -16,11 +16,12 @@ Feature: Eliminate AppendVertices rule | "Tim Duncan" | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | Scenario: eliminate AppendVertices failed with returned path When profiling query: diff --git a/tests/tck/features/optimizer/PrunePropertiesRule.feature b/tests/tck/features/optimizer/PrunePropertiesRule.feature index 02d3c5dc7a4..0c4f38f3e80 100644 --- a/tests/tck/features/optimizer/PrunePropertiesRule.feature +++ b/tests/tck/features/optimizer/PrunePropertiesRule.feature @@ -401,17 +401,18 @@ Feature: Prune Properties rule | scount | | 270 | And the execution plan should be: - | id | name | dependencies | operator info | - | 12 | Aggregate | 13 | | - | 13 | HashInnerJoin | 15, 11 | | - | 15 | Project | 4 | | - | 4 | Traverse | 3 | { "vertexProps": "" } | - | 3 | Traverse | 14 | { "vertexProps": "" } | - | 14 | IndexScan | 2 | | - | 2 | Start | | | - | 11 | Project | 9 | | - | 9 | Traverse | 8 | { "vertexProps": "" } | - | 8 | Argument | | | + | id | name | dependencies | operator info | + | 12 | Aggregate | 13 | | + | 13 | HashInnerJoin | 15, 11 | | + | 15 | Project | 5 | | + | 5 | AppendVertices | 4 | | + | 4 | Traverse | 3 | { "vertexProps": "" } | + | 3 | Traverse | 14 | { "vertexProps": "" } | + | 14 | IndexScan | 2 | | + | 2 | Start | | | + | 11 | Project | 9 | | + | 9 | Traverse | 8 | { "vertexProps": "" } | + | 8 | Argument | | | @distonly Scenario: return function diff --git a/tests/tck/features/optimizer/PushEFilterDownRule.feature b/tests/tck/features/optimizer/PushEFilterDownRule.feature index 7366594663c..3142684cd68 100644 --- a/tests/tck/features/optimizer/PushEFilterDownRule.feature +++ b/tests/tck/features/optimizer/PushEFilterDownRule.feature @@ -20,11 +20,12 @@ Feature: Push EFilter down rule | "Tim Duncan" | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | When profiling query: """ MATCH (v:player{name: 'Tim Duncan'})<-[e:like{likeness: 95}]-() return v.player.name AS name @@ -33,11 +34,12 @@ Feature: Push EFilter down rule | name | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | When profiling query: """ MATCH (v:player{name: 'Tim Duncan'})-[e:like|serve{likeness: 95}]-() return v.player.name AS name @@ -48,11 +50,12 @@ Feature: Push EFilter down rule | "Tim Duncan" | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | {"edge filter": "", "filter": "(_any(like.likeness,serve.likeness)==95)"} | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"edge filter": "", "filter": "(_any(like.likeness,serve.likeness)==95)"} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | When profiling query: """ MATCH (v:player{name: 'Tim Duncan'})-[e:like*1..2{likeness: 95}]->() return v.player.name AS name @@ -64,11 +67,12 @@ Feature: Push EFilter down rule | "Tim Duncan" | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"edge filter": "", "filter": "(like.likeness==95)"} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | Scenario Outline: can't push eFilter down when zero step enabled When profiling query: @@ -81,8 +85,9 @@ Feature: Push EFilter down rule | "Tim Duncan" | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | {"edge filter": "(*.likeness==95)", "filter": ""} | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"edge filter": "(*.likeness==95)", "filter": ""} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | diff --git a/tests/tck/features/optimizer/PushFilterDownNodeRule.feature b/tests/tck/features/optimizer/PushFilterDownNodeRule.feature index e3c738c56fd..0d61cc235d3 100644 --- a/tests/tck/features/optimizer/PushFilterDownNodeRule.feature +++ b/tests/tck/features/optimizer/PushFilterDownNodeRule.feature @@ -49,11 +49,12 @@ Feature: Push Filter down node rule | "Tim Duncan" | | "Tim Duncan" | And the execution plan should be: - | id | name | dependencies | operator info | - | 5 | Project | 8 | | - | 8 | Traverse | 7 | {"vertex filter": "", "first step filter": "(player.name==\"Tim Duncan\")"} | - | 7 | IndexScan | 0 | | - | 0 | Start | | | + | id | name | dependencies | operator info | + | 5 | Project | 9 | | + | 9 | AppendVertices | 8 | | + | 8 | Traverse | 7 | {"vertex filter": "", "first step filter": "(player.name==\"Tim Duncan\")"} | + | 7 | IndexScan | 0 | | + | 0 | Start | | | When profiling query: """ MATCH (v:player{name: 'Tim Duncan'})-[:like]->() WHERE v.player.age == 42 return v.player.name AS name