From f5dc957d290c484c2c3aa6aeabc2f00780136161 Mon Sep 17 00:00:00 2001 From: Andrea Child Date: Wed, 12 Mar 2025 14:47:45 -0700 Subject: [PATCH] Changed GremlinLangScriptEngine to treat float literals as Double instead of BigInteger. --- .../language/grammar/GenericLiteralVisitor.java | 2 +- .../language/grammar/GeneralLiteralVisitorTest.java | 13 +++++++------ .../grammar/TraversalPredicateVisitorTest.java | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java index 7b841de87c8..f269ce248bc 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java @@ -461,7 +461,7 @@ public Object visitFloatLiteral(final GremlinParser.FloatLiteralContext ctx) { // parse D/d suffix as Double return new Double(floatLiteral); } else { - return new BigDecimal(floatLiteral); + return new Double(floatLiteral); } } diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/GeneralLiteralVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/GeneralLiteralVisitorTest.java index 96d0ede1c7d..7f5d0903cf8 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/GeneralLiteralVisitorTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/GeneralLiteralVisitorTest.java @@ -405,11 +405,12 @@ public static class ValidFloatLiteralTest { @Parameterized.Parameters() public static Iterable generateTestParameters() { return Arrays.asList(new Object[][]{ - {"1.1", "1.1", "java.math.BigDecimal"}, - {"-0.1", "-0.1", "java.math.BigDecimal"}, - {"1.0E+12", "1.0E12", "java.math.BigDecimal"}, - {"-0.1E-12", "-0.1E-12", "java.math.BigDecimal"}, - {"1E12", "1E12", "java.math.BigDecimal"}, + // default + {"1.1", "1.1", "java.lang.Double"}, + {"-0.1", "-0.1", "java.lang.Double"}, + {"1.0E+12", "1.0E12", "java.lang.Double"}, + {"-0.1E-12", "-0.1E-12", "java.lang.Double"}, + {"1E12", "1E12", "java.lang.Double"}, // float {"1.1f", "1.1", "java.lang.Float"}, {"-0.1F", "-0.1", "java.lang.Float"}, @@ -603,7 +604,7 @@ public void shouldParseGenericLiteralCollection() { assertEquals(10, genericLiterals.get(1)); // verify 3rd element - assertEquals(new BigDecimal(14.5), genericLiterals.get(2)); + assertEquals(new Double(14.5), genericLiterals.get(2)); // verify 4th element assertEquals("hello", genericLiterals.get(3)); diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java index cb7b49acb54..54bc2065add 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java @@ -49,7 +49,7 @@ public static Iterable generateTestParameters() { {"gt(1.0D)", P.gt(1d)}, {"gte(1L)", P.gte(1L)}, {"inside(100, 200)", P.inside(100, 200)}, - {"outside(1E11, 2e-11)", P.outside(new BigDecimal("1E11"), new BigDecimal("2e-11"))}, + {"outside(1E11, 2e-11)", P.outside(new Double("1E11"), new Double("2e-11"))}, {"between(\"a\", \"e\")", P.between("a", "e")}, {"within([\"a\", \"e\"])", P.within(Arrays.asList("a", "e"))}, {"within()", P.within()}, @@ -73,7 +73,7 @@ public static Iterable generateTestParameters() { {"P.gt(1.0D)", P.gt(1d)}, {"P.gte(1L)", P.gte(1L)}, {"P.inside(100, 200)", P.inside(100, 200)}, - {"P.outside(1E11, 2e-11)", P.outside(new BigDecimal("1E11"), new BigDecimal("2e-11"))}, + {"P.outside(1E11, 2e-11)", P.outside(new Double("1E11"), new Double("2e-11"))}, {"P.between(\"a\", \"e\")", P.between("a", "e")}, {"P.within([\"a\", \"e\"])", P.within(Arrays.asList("a", "e"))}, {"P.within()", P.within()},