Skip to content

Commit 5b1c2e9

Browse files
committed
Merge branch '3.8-dev'
2 parents 7d1ae97 + f66fa39 commit 5b1c2e9

8 files changed

Lines changed: 65 additions & 27 deletions

File tree

CHANGELOG.asciidoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
9494
9595
This release also includes changes from <<release-3-7-XXX, 3.7.XXX>>.
9696
97+
* Added `DateTime` ontop of the existing 'datetime' grammar.
9798
* Added UUID() + UUID(value) to grammar
9899
* Modified `TraversalStrategy` construction in Javascript where configurations are now supplied as a `Map` of options.
99100
* Fixed bug in GraphSON v2 and v3 where full round trip of `TraversalStrategy` implementations was failing.

gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,9 +758,18 @@ private static IDictionary<string, List<Func<GraphTraversalSource, IDictionary<s
758758
{"g_injectXdatetimeXstrXX_dateAddXminute_10X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Minute, 10)}},
759759
{"g_injectXdatetimeXstrXX_dateAddXsecond_20X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Second, 20)}},
760760
{"g_injectXdatetimeXstrXX_dateAddXday_11X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-09-06T00:00Z")).DateAdd(DT.Day, 11)}},
761+
{"g_injectXDateTimeXstrXX_dateAddXDT_hour_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Hour, 2)}},
762+
{"g_injectXDateTimeXstrXX_dateAddXhour_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Hour, 2)}},
763+
{"g_injectXDateTimeXstrXX_dateAddXhour_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Hour, -1)}},
764+
{"g_injectXDateTimeXstrXX_dateAddXminute_10X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Minute, 10)}},
765+
{"g_injectXDateTimeXstrXX_dateAddXsecond_20X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateAdd(DT.Second, 20)}},
766+
{"g_injectXDateTimeXstrXX_dateAddXday_11X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-09-06T00:00Z")).DateAdd(DT.Day, 11)}},
761767
{"g_injectXdatetimeXstr1XX_dateDiffXdatetimeXstr2XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateDiff(DateTimeOffset.Parse("2023-08-09T00:00Z"))}},
762768
{"g_injectXdatetimeXstr1XX_dateDiffXconstantXdatetimeXstr2XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T00:00Z")).DateDiff(__.Constant<object>(DateTimeOffset.Parse("2023-08-01T00:00Z")))}},
763769
{"g_injectXdatetimeXstr1XX_dateDiffXinjectXdatetimeXstr2XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T00:00Z")).DateDiff(__.Inject(DateTimeOffset.Parse("2023-10-11T00:00Z")))}},
770+
{"g_injectXDateTimeXstr1XX_dateDiffXDateTimeXstr2XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-02T00:00Z")).DateDiff(DateTimeOffset.Parse("2023-08-09T00:00Z"))}},
771+
{"g_injectXDateTimeXstr1XX_dateDiffXconstantXDateTimeXstr2XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T00:00Z")).DateDiff(__.Constant<object>(DateTimeOffset.Parse("2023-08-01T00:00Z")))}},
772+
{"g_injectXDateTimeXstr1XX_dateDiffXinjectXDateTimeXstr2XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(DateTimeOffset.Parse("2023-08-08T00:00Z")).DateDiff(__.Inject(DateTimeOffset.Parse("2023-10-11T00:00Z")))}},
764773
{"g_injectXnullX_differenceXinjectX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null).Difference(__.Inject(1))}},
765774
{"g_V_valuesXnameX_differenceXV_foldX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("name").Difference(__.V().Fold())}},
766775
{"g_V_fold_differenceXconstantXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fold().Difference(__.Constant<object>(null))}},
@@ -1311,6 +1320,9 @@ private static IDictionary<string, List<Func<GraphTraversalSource, IDictionary<s
13111320
{"g_V_hasLabelXsoftwareX_valueXnameX_substringX1_neg1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("software").Values<object>("name").Substring(1, -1)}},
13121321
{"g_V_hasLabelXsoftwareX_valueXnameX_substringXneg4_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("software").Values<object>("name").Substring(-4, 2)}},
13131322
{"g_V_hasLabelXsoftwareX_valueXnameX_substringXneg3_neg1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("software").Values<object>("name").Substring(-3, -1)}},
1323+
{"g_V_sum_overflow_byte", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>((byte) 127, (byte) 1).Sum<object>()}},
1324+
{"g_V_sum_overflow_short", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>((short) 32767, (short) 1).Sum<object>()}},
1325+
{"g_V_sum_overflow_int", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(2147483647, 1).Sum<object>()}},
13141326
{"g_V_age_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Sum<object>()}},
13151327
{"g_V_foo_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("foo").Sum<object>()}},
13161328
{"g_V_age_fold_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Fold().Sum<object>(Scope.Local)}},

gremlin-go/driver/cucumber/gremlin.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -732,9 +732,18 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
732732
"g_injectXdatetimeXstrXX_dateAddXminute_10X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Minute, 10)}},
733733
"g_injectXdatetimeXstrXX_dateAddXsecond_20X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Second, 20)}},
734734
"g_injectXdatetimeXstrXX_dateAddXday_11X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 9, 6, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Day, 11)}},
735+
"g_injectXDateTimeXstrXX_dateAddXDT_hour_2X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Hour, 2)}},
736+
"g_injectXDateTimeXstrXX_dateAddXhour_2X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Hour, 2)}},
737+
"g_injectXDateTimeXstrXX_dateAddXhour_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Hour, -1)}},
738+
"g_injectXDateTimeXstrXX_dateAddXminute_10X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Minute, 10)}},
739+
"g_injectXDateTimeXstrXX_dateAddXsecond_20X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Second, 20)}},
740+
"g_injectXDateTimeXstrXX_dateAddXday_11X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 9, 6, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateAdd(gremlingo.DT.Day, 11)}},
735741
"g_injectXdatetimeXstr1XX_dateDiffXdatetimeXstr2XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateDiff(time.Date(2023, 8, 9, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}},
736742
"g_injectXdatetimeXstr1XX_dateDiffXconstantXdatetimeXstr2XXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateDiff(gremlingo.T__.Constant(time.Date(2023, 8, 1, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))))}},
737743
"g_injectXdatetimeXstr1XX_dateDiffXinjectXdatetimeXstr2XXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateDiff(gremlingo.T__.Inject(time.Date(2023, 10, 11, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))))}},
744+
"g_injectXDateTimeXstr1XX_dateDiffXDateTimeXstr2XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 2, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateDiff(time.Date(2023, 8, 9, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0)))}},
745+
"g_injectXDateTimeXstr1XX_dateDiffXconstantXDateTimeXstr2XXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateDiff(gremlingo.T__.Constant(time.Date(2023, 8, 1, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))))}},
746+
"g_injectXDateTimeXstr1XX_dateDiffXinjectXDateTimeXstr2XXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(time.Date(2023, 8, 8, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))).DateDiff(gremlingo.T__.Inject(time.Date(2023, 10, 11, 0, 0, 0, 0, time.FixedZone("UTC+00:00", 0))))}},
738747
"g_injectXnullX_differenceXinjectX1XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil).Difference(gremlingo.T__.Inject(1))}},
739748
"g_V_valuesXnameX_differenceXV_foldX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("name").Difference(gremlingo.T__.V().Fold())}},
740749
"g_V_fold_differenceXconstantXnullXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Fold().Difference(gremlingo.T__.Constant(nil))}},
@@ -1285,6 +1294,9 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
12851294
"g_V_hasLabelXsoftwareX_valueXnameX_substringX1_neg1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("software").Values("name").Substring(1, -1)}},
12861295
"g_V_hasLabelXsoftwareX_valueXnameX_substringXneg4_2X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("software").Values("name").Substring(-4, 2)}},
12871296
"g_V_hasLabelXsoftwareX_valueXnameX_substringXneg3_neg1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("software").Values("name").Substring(-3, -1)}},
1297+
"g_V_sum_overflow_byte": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(127, 1).Sum()}},
1298+
"g_V_sum_overflow_short": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(32767, 1).Sum()}},
1299+
"g_V_sum_overflow_int": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(2147483647, 1).Sum()}},
12881300
"g_V_age_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Sum()}},
12891301
"g_V_foo_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("foo").Sum()}},
12901302
"g_V_age_fold_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Fold().Sum(gremlingo.Scope.Local)}},

gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gremlin-language/src/main/antlr4/Gremlin.g4

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1643,6 +1643,8 @@ booleanLiteral
16431643
dateLiteral
16441644
: K_DATETIME LPAREN stringArgument RPAREN
16451645
| K_DATETIME LPAREN RPAREN
1646+
| K_DATETIMEU LPAREN stringArgument RPAREN
1647+
| K_DATETIMEU LPAREN RPAREN
16461648
;
16471649

16481650
nullLiteral
@@ -1725,6 +1727,7 @@ keyword
17251727
| K_DATEADD
17261728
| K_DATEDIFF
17271729
| K_DATETIME
1730+
| K_DATETIMEU
17281731
| K_DECR
17291732
| K_DEDUP
17301733
| K_DESC
@@ -1985,6 +1988,7 @@ K_DAY: 'day';
19851988
K_DATEADD: 'dateAdd';
19861989
K_DATEDIFF: 'dateDiff';
19871990
K_DATETIME: 'datetime';
1991+
K_DATETIMEU: 'DateTime';
19881992
K_DECR: 'decr';
19891993
K_DEDUP: 'dedup';
19901994
K_DESC: 'desc';

0 commit comments

Comments
 (0)