You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2021/09/03 17:54:00 UTC

[jira] [Commented] (TINKERPOP-2605) Further enforce and refine null semantics

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

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

spmallette opened a new pull request #1471:
URL: https://github.com/apache/tinkerpop/pull/1471


   https://issues.apache.org/jira/browse/TINKERPOP-2605
   
   The JIRA outlines the steps that fail when `null` is encountered in some way. There are still further cases where things aren't working properly but this PR is getting large enough. It may be sufficient to review this PR just be looking at the gherkin tests that establish the semantics, but feel free to dig into the code if desired. Here' a sample of things working now that weren't before:
   
   ```text
   gremlin> g.V().hasLabel(null)
   gremlin> g.V().has('name',within('josh',null))
   ==>v[4]
   gremlin> g.V().has('name',within(null))
   gremlin> g.V().values('age').inject(null).sum()
   ==>123
   gremlin> g.inject(null,null,null).sum()
   ==>null
   gremlin> g.V().values('age').inject(null).min()
   ==>27
   gremlin> g.V().values('age').inject(null).max()
   ==>35
   gremlin> g.inject(null,null,null).min()
   ==>null
   gremlin> g.inject(null,null,null).max()
   ==>null
   gremlin> g.V().values('age').inject(null).mean()
   ==>30.75
   gremlin> g.inject(null,null,null).mean()
   ==>null
   gremlin> g.V().properties().hasKey(null)
   gremlin> g.V().properties().hasValue(null)
   gremlin> g.withSideEffect('k',null).inject(1).select('k')
   ==>null
   gremlin> g.inject(null,1).as('a').path()
   ==>[null]
   ==>[1]
   ```
   
   All tests pass with `docker/build.sh -t -n -i`
   
   VOTE +1


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@tinkerpop.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Further enforce and refine null semantics
> -----------------------------------------
>
>                 Key: TINKERPOP-2605
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2605
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: process, test-suite
>    Affects Versions: 3.5.1
>            Reporter: Stephen Mallette
>            Assignee: Stephen Mallette
>            Priority: Major
>
> A number of areas where {{null}} is used in traversals result in some odd looking errors. Identify these situations and improve them to be more user friendly. Some specific items to take care of:
> {code}
> hasLabel(null) // currently results in exception, should just filter
> P.within(null) // TINKERPOP-2598
> sum() // NPE if null is present, should ignore nulls in calculation and return null if all values are null
> mean() // NPE if null is present, should ignore nulls in calculation and return null if all values are null
> max() // NPE if null is present, should ignore nulls in calculation and return null if all values are null
> min() // NPE if null is present, should ignore nulls in calculation and return null if all values are null
> inject(null) // NPE
> hasValue(null) // NPE if accidentally applied to hasValue(P), should just filter
> hasKey(null) // NPE, should just filter
> withSideEffect('k',null) // NPE, should just allow the assignment
> g.inject(1,null).as('a') // NPE and won't allow labelling 
> path() // NPE when encountering nulls
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)