Miracy Cavendish created TINKERPOP-2904: -------------------------------------------
Summary: Forget to throw GremlinTypeErrorException when using is(predicate) to compare NaN Key: TINKERPOP-2904 URL: https://issues.apache.org/jira/browse/TINKERPOP-2904 Project: TinkerPop Issue Type: Bug Affects Versions: 3.5.5 Reporter: Miracy Cavendish By the design of Gremlin, an exception should be thrown when comparison with NaN. However, I found that when using ```is(predicate)``` to compare, the exception is always swallowed, and this issue occurs on all GDBs support Gremlin. ``` g.inject(Double.NaN).is(gt(3)) ``` {code:java} public static final GremlinValueComparator COMPARABILITY = new GremlinValueComparator() { /** * Compare two Gremlin value objects per the Comparability semantics. Throws type errors for NaN comparison * and for cross-type comparison (including nulltype). * * Use this method for P.lt/lte/gt/gte. */ @Override public int compare(final Object f, final Object s) { // For Compare, NaN always produces ERROR if (eitherAreNaN(f, s)) throwTypeError(); // For Compare we do not cross type boundaries, including null if (!comparable(f, s)) throwTypeError(); // comparable(f, s) assures that type(f) == type(s) final Type type = Type.type(f); return comparator(type).compare(f, s); } ... {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)