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)