[ 
https://issues.apache.org/jira/browse/TINKERPOP-2811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17775931#comment-17775931
 ] 

ASF GitHub Bot commented on TINKERPOP-2811:
-------------------------------------------

codecov-commenter commented on PR #2293:
URL: https://github.com/apache/tinkerpop/pull/2293#issuecomment-1765340124

   ## 
[Codecov](https://app.codecov.io/gh/apache/tinkerpop/pull/2293?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
 Report
   > Merging 
[#2293](https://app.codecov.io/gh/apache/tinkerpop/pull/2293?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
 (8663ca7) into 
[3.6-dev](https://app.codecov.io/gh/apache/tinkerpop/commit/097b32e9171164048e0e5334d83afe329eed1775?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
 (097b32e) will **decrease** coverage by `4.06%`.
   > The diff coverage is `n/a`.
   
   ```diff
   @@              Coverage Diff              @@
   ##             3.6-dev    #2293      +/-   ##
   =============================================
   - Coverage      75.24%   71.18%   -4.06%     
   =============================================
     Files           1056       25    -1031     
     Lines          63352     3766   -59586     
     Branches        6923        0    -6923     
   =============================================
   - Hits           47670     2681   -44989     
   + Misses         13116      898   -12218     
   + Partials        2566      187    -2379     
   ```
   
   
   [see 1031 files with indirect coverage 
changes](https://app.codecov.io/gh/apache/tinkerpop/pull/2293/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
   
   :mega: We’re building smart automated test selection to slash your CI/CD 
build times. [Learn 
more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
   




> ElementIdStrategy doesn't replace all references of an element's id with the 
> specified custom id property
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-2811
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2811
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.4.0, 3.6.1
>            Reporter: Cameron Smith
>            Priority: Minor
>
> When using the ElementIdStrategy, if a traversal attempts to filter graph 
> elements with multiple _has_ steps and the id filter is not the first 
> property to be filtered on, then the reference to the element's id is not 
> replaced with the custom id property during the ElementIdStrategy's mutation 
> of the traversal:
> {noformat}
> gremlin> graph = TinkerGraph.open()
> ==>tinkergraph[vertices:0 edges:0]
> gremlin> g = 
> graph.traversal().withStrategies(ElementIdStrategy.build().create())
> ==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
> gremlin> g.V().hasId("foo").has("name", "bar").explain()
> ==>Traversal Explanation
> ===================================================================================================
> Original Traversal                    [GraphStep(vertex,[]), 
> HasStep([~id.eq(foo), name.eq(bar)])]
> ConnectiveStrategy              [D]   [GraphStep(vertex,[]), 
> HasStep([~id.eq(foo), name.eq(bar)])]
> ElementIdStrategy               [D]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> IdentityRemovalStrategy         [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> MatchPredicateStrategy          [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> FilterRankingStrategy           [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> InlineFilterStrategy            [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> IncidentToAdjacentStrategy      [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> AdjacentToIncidentStrategy      [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> EarlyLimitStrategy              [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> ByModulatorOptimizationStrategy [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> RepeatUnrollStrategy            [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> CountStrategy                   [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> PathRetractionStrategy          [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> LazyBarrierStrategy             [O]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> TinkerGraphCountStrategy        [P]   [GraphStep(vertex,[]), 
> HasStep([__id.eq(foo), name.eq(bar)])]
> TinkerGraphStepStrategy         [P]   [TinkerGraphStep(vertex,[__id.eq(foo), 
> name.eq(bar)])]
> TinkerMergeEVStepStrategy       [P]   [TinkerGraphStep(vertex,[__id.eq(foo), 
> name.eq(bar)])]
> ProfileStrategy                 [F]   [TinkerGraphStep(vertex,[__id.eq(foo), 
> name.eq(bar)])]
> StandardVerificationStrategy    [V]   [TinkerGraphStep(vertex,[__id.eq(foo), 
> name.eq(bar)])]
> Final Traversal                       [TinkerGraphStep(vertex,[__id.eq(foo), 
> name.eq(bar)])]
> gremlin> g.V().has("name", "bar").hasId("foo").explain()
> ==>Traversal Explanation
> ==================================================================================================
> Original Traversal                    [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> ConnectiveStrategy              [D]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> ElementIdStrategy               [D]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> IdentityRemovalStrategy         [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> MatchPredicateStrategy          [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> FilterRankingStrategy           [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> InlineFilterStrategy            [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> IncidentToAdjacentStrategy      [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> AdjacentToIncidentStrategy      [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> EarlyLimitStrategy              [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> ByModulatorOptimizationStrategy [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> RepeatUnrollStrategy            [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> CountStrategy                   [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> PathRetractionStrategy          [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> LazyBarrierStrategy             [O]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> TinkerGraphCountStrategy        [P]   [GraphStep(vertex,[]), 
> HasStep([name.eq(bar), ~id.eq(foo)])]
> TinkerGraphStepStrategy         [P]   
> [TinkerGraphStep(vertex,[foo],[name.eq(bar)])]
> TinkerMergeEVStepStrategy       [P]   
> [TinkerGraphStep(vertex,[foo],[name.eq(bar)])]
> ProfileStrategy                 [F]   
> [TinkerGraphStep(vertex,[foo],[name.eq(bar)])]
> StandardVerificationStrategy    [V]   
> [TinkerGraphStep(vertex,[foo],[name.eq(bar)])]
> Final Traversal                       
> [TinkerGraphStep(vertex,[foo],[name.eq(bar)])]{noformat}
> In the above example, the first traversal shows the behavior when id 
> filtering is done first, and the second traversal demonstrates the behavior 
> when id filtering is not the first filtering step.
> This was reproduced on both TinkerPop 3.6.1 and 3.4.0.
> The current workaround is to ensure that when chaining _has_ steps together 
> that the first filter on id, if filtering on id is required.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to