You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by co...@apache.org on 2026/03/17 16:45:28 UTC
(tinkerpop) 01/01: [TINKERPOP-3236] Expand grammar argument types for coin and pagerank steps to numericArgument
This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch TINKERPOP-3236
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit a0e0ff9e327c66d27021c1d652641e34f2ae8e0c
Author: Cole Greer <Co...@improving.com>
AuthorDate: Tue Mar 17 09:44:04 2026 -0700
[TINKERPOP-3236] Expand grammar argument types for coin and pagerank steps to numericArgument
---
CHANGELOG.asciidoc | 1 +
.../tinkerpop/gremlin/language/grammar/ArgumentVisitor.java | 10 +++++-----
.../gremlin/language/grammar/DefaultGremlinBaseVisitor.java | 2 +-
.../gremlin/language/grammar/GenericLiteralVisitor.java | 4 ++--
.../gremlin/language/grammar/TraversalMethodVisitor.java | 4 ++--
.../gremlin/language/grammar/ArgumentVisitorTest.java | 2 +-
gremlin-language/src/main/antlr4/Gremlin.g4 | 8 ++++----
7 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 555e70a604..984c5dd4f4 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,6 +29,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
* Fixed bug in `SubgraphStrategy` where specifying `edges` and `vertices` filters that had `map`-type steps could generate an error.
* Fixed bug in `ReservedKeysVerificationStrategy` where `AddPropertyStep` was not triggering proper validations.
* Fixed bug in `mergeE` where `onCreate` validation of invalid static argument overrides did not trigger until traversal runtime.
+* Expand grammar argument types for `coin` and `pagerank` steps to `numericArgument` from `floatArgument`.
* Added `closeSessionPostGraphOp` to the Gremlin Server settings to indicate that the `Session` should be closed on either a successful commit or rollback.
* Added `SessionedChildClient` that borrows connections from a different `Client` for use with `Sessions`.
* Added `reuseConnectionsForSessions` to Java GLV settings to decide whether to use `SessionedChildClient` for remote transactions.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java
index a461896fa7..9b7212c638 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java
@@ -66,8 +66,8 @@ public class ArgumentVisitor extends DefaultGremlinBaseVisitor<Object> {
/**
* Wrapper to visit function for float types.
*/
- public Number parseNumber(final GremlinParser.FloatArgumentContext ctx) {
- return (Number) visitFloatArgument(ctx);
+ public Number parseNumber(final GremlinParser.NumericArgumentContext ctx) {
+ return (Number) visitNumericArgument(ctx);
}
/**
@@ -240,9 +240,9 @@ public class ArgumentVisitor extends DefaultGremlinBaseVisitor<Object> {
}
@Override
- public Object visitFloatArgument(final GremlinParser.FloatArgumentContext ctx) {
- if (ctx.floatLiteral() != null) {
- return antlr.genericVisitor.parseFloating(ctx.floatLiteral());
+ public Object visitNumericArgument(final GremlinParser.NumericArgumentContext ctx) {
+ if (ctx.numericLiteral() != null) {
+ return antlr.genericVisitor.parseNumeric(ctx.numericLiteral());
} else {
return visitVariable(ctx.variable());
}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
index c0432ddd83..3582444ab6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java
@@ -1462,7 +1462,7 @@ public class DefaultGremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> im
/**
* {@inheritDoc}
*/
- @Override public T visitFloatArgument(final GremlinParser.FloatArgumentContext ctx) { notImplemented(ctx); return null; }
+ @Override public T visitNumericArgument(final GremlinParser.NumericArgumentContext ctx) { notImplemented(ctx); return null; }
/**
* {@inheritDoc}
*/
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 d7f87f298a..a4d5a8b641 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
@@ -63,8 +63,8 @@ public class GenericLiteralVisitor extends DefaultGremlinBaseVisitor<Object> {
/**
* Parse floating literal context and return a floating type number.
*/
- public Number parseFloating(final GremlinParser.FloatLiteralContext floatLiteral) {
- return (Number) visitFloatLiteral(floatLiteral);
+ public Number parseNumeric(final GremlinParser.NumericLiteralContext numericLiteral) {
+ return (Number) visitNumericLiteral(numericLiteral);
}
/**
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
index 6dcafe2e65..222af839e3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
@@ -443,7 +443,7 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
*/
@Override
public GraphTraversal visitTraversalMethod_coin(final GremlinParser.TraversalMethod_coinContext ctx) {
- return graphTraversal.coin(((Number) antlr.argumentVisitor.visitFloatArgument(ctx.floatArgument())).doubleValue());
+ return graphTraversal.coin(((Number) antlr.argumentVisitor.visitNumericArgument(ctx.numericArgument())).doubleValue());
}
/**
@@ -1228,7 +1228,7 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
*/
@Override
public GraphTraversal visitTraversalMethod_pageRank_double(final GremlinParser.TraversalMethod_pageRank_doubleContext ctx) {
- return graphTraversal.pageRank(((Number) antlr.argumentVisitor.visitFloatArgument(ctx.floatArgument())).doubleValue());
+ return graphTraversal.pageRank(((Number) antlr.argumentVisitor.visitNumericArgument(ctx.numericArgument())).doubleValue());
}
/**
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java
index 8c2472eebc..4c64c1804d 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java
@@ -178,7 +178,7 @@ public class ArgumentVisitorTest {
});
} else if (clazz.equals(Float.class)) {
assertParsing(() -> {
- final GremlinParser.FloatArgumentContext ctx = parser.floatArgument();
+ final GremlinParser.NumericArgumentContext ctx = parser.numericArgument();
return antlrToLanguage.argumentVisitor.parseNumber(ctx);
});
} else if (clazz.equals(String.class)) {
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index 35a4b934e0..0b7a224790 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -409,7 +409,7 @@ traversalMethod_coalesce
;
traversalMethod_coin
- : 'coin' LPAREN floatArgument RPAREN
+ : 'coin' LPAREN numericArgument RPAREN
;
traversalMethod_combine
@@ -668,7 +668,7 @@ traversalMethod_outV
traversalMethod_pageRank
: 'pageRank' LPAREN RPAREN #traversalMethod_pageRank_Empty
- | 'pageRank' LPAREN floatArgument RPAREN #traversalMethod_pageRank_double
+ | 'pageRank' LPAREN numericArgument RPAREN #traversalMethod_pageRank_double
;
traversalMethod_path
@@ -1486,8 +1486,8 @@ integerArgument
| variable
;
-floatArgument
- : floatLiteral
+numericArgument
+ : numericLiteral
| variable
;