Skip to content

Commit f66fa39

Browse files
authored
Added DateTime ontop of the existing datetime in Grammar (#3116)
1 parent 2fa4472 commit f66fa39

8 files changed

Lines changed: 71 additions & 9 deletions

File tree

CHANGELOG.asciidoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
2525
2626
This release also includes changes from <<release-3-7-XXX, 3.7.XXX>>.
2727
28+
* Added `DateTime` ontop of the existing 'datetime' grammar.
2829
* Added UUID() + UUID(value) to grammar
2930
* Modified `TraversalStrategy` construction in Javascript where configurations are now supplied as a `Map` of options.
3031
* 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
@@ -734,9 +734,18 @@ private static IDictionary<string, List<Func<GraphTraversalSource, IDictionary<s
734734
{"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)}},
735735
{"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)}},
736736
{"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)}},
737+
{"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)}},
738+
{"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)}},
739+
{"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)}},
740+
{"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)}},
741+
{"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)}},
742+
{"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)}},
737743
{"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"))}},
738744
{"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")))}},
739745
{"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")))}},
746+
{"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"))}},
747+
{"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")))}},
748+
{"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")))}},
740749
{"g_injectXnullX_differenceXinjectX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null).Difference(__.Inject(1))}},
741750
{"g_V_valuesXnameX_differenceXV_foldX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("name").Difference(__.V().Fold())}},
742751
{"g_V_fold_differenceXconstantXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fold().Difference(__.Constant<object>(null))}},
@@ -1303,6 +1312,9 @@ private static IDictionary<string, List<Func<GraphTraversalSource, IDictionary<s
13031312
{"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)}},
13041313
{"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)}},
13051314
{"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)}},
1315+
{"g_V_sum_overflow_byte", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>((byte) 127, (byte) 1).Sum<object>()}},
1316+
{"g_V_sum_overflow_short", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>((short) 32767, (short) 1).Sum<object>()}},
1317+
{"g_V_sum_overflow_int", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(2147483647, 1).Sum<object>()}},
13061318
{"g_V_age_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Sum<object>()}},
13071319
{"g_V_foo_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("foo").Sum<object>()}},
13081320
{"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
@@ -704,9 +704,18 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
704704
"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)}},
705705
"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)}},
706706
"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)}},
707+
"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)}},
708+
"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)}},
709+
"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)}},
710+
"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)}},
711+
"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)}},
712+
"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)}},
707713
"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)))}},
708714
"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))))}},
709715
"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))))}},
716+
"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)))}},
717+
"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))))}},
718+
"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))))}},
710719
"g_injectXnullX_differenceXinjectX1XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil).Difference(gremlingo.T__.Inject(1))}},
711720
"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())}},
712721
"g_V_fold_differenceXconstantXnullXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Fold().Difference(gremlingo.T__.Constant(nil))}},
@@ -1273,6 +1282,9 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
12731282
"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)}},
12741283
"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)}},
12751284
"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)}},
1285+
"g_V_sum_overflow_byte": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(127, 1).Sum()}},
1286+
"g_V_sum_overflow_short": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(32767, 1).Sum()}},
1287+
"g_V_sum_overflow_int": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(2147483647, 1).Sum()}},
12761288
"g_V_age_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Sum()}},
12771289
"g_V_foo_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("foo").Sum()}},
12781290
"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: 12 additions & 0 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
@@ -1633,6 +1633,8 @@ booleanLiteral
16331633
dateLiteral
16341634
: K_DATETIME LPAREN stringArgument RPAREN
16351635
| K_DATETIME LPAREN RPAREN
1636+
| K_DATETIMEU LPAREN stringArgument RPAREN
1637+
| K_DATETIMEU LPAREN RPAREN
16361638
;
16371639

16381640
nullLiteral
@@ -1715,6 +1717,7 @@ keyword
17151717
| K_DATEADD
17161718
| K_DATEDIFF
17171719
| K_DATETIME
1720+
| K_DATETIMEU
17181721
| K_DECR
17191722
| K_DEDUP
17201723
| K_DESC
@@ -1975,6 +1978,7 @@ K_DAY: 'day';
19751978
K_DATEADD: 'dateAdd';
19761979
K_DATEDIFF: 'dateDiff';
19771980
K_DATETIME: 'datetime';
1981+
K_DATETIMEU: 'DateTime';
19781982
K_DECR: 'decr';
19791983
K_DEDUP: 'dedup';
19801984
K_DESC: 'desc';

0 commit comments

Comments
 (0)