Skip to content

Commit 535f9b4

Browse files
committed
Add another test and fix where(...)-generation again.
1 parent f7338eb commit 535f9b4

File tree

31 files changed

+801
-5
lines changed

31 files changed

+801
-5
lines changed

src/Core/Queries/GremlinQuery.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,11 +1477,16 @@ private Traversal Where(Traversal traversal, Expression left, ExpressionSemantic
14771477
{
14781478
traversal = traversal.Push(new WhereStepLabelAndPredicateStep(leftStepLabel, effectivePredicate));
14791479

1480-
if (maybeLeftStepLabelValueMemberExpression is { } leftStepLabelValueMemberExpression)
1481-
traversal = traversal.Push(new WherePredicateStep.ByMemberStep(GetKey(leftStepLabelValueMemberExpression)));
1482-
1483-
if (maybyRightStepLabelValueMemberExpression is MemberExpression rightStepLabelValueMemberExpression)
1484-
traversal = traversal.Push(new WherePredicateStep.ByMemberStep(GetKey(rightStepLabelValueMemberExpression)));
1480+
if (maybeLeftStepLabelValueMemberExpression is not null || maybyRightStepLabelValueMemberExpression is not null)
1481+
{
1482+
traversal = traversal
1483+
.Push(new WherePredicateStep.ByMemberStep(maybeLeftStepLabelValueMemberExpression is { } leftStepLabelValueMemberExpression
1484+
? GetKey(leftStepLabelValueMemberExpression)
1485+
: default(Key?)))
1486+
.Push(new WherePredicateStep.ByMemberStep(maybyRightStepLabelValueMemberExpression is { } rightStepLabelValueMemberExpression
1487+
? GetKey(rightStepLabelValueMemberExpression)
1488+
: default(Key?)));
1489+
}
14851490

14861491
return traversal;
14871492
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
g.V().hasLabel('Person').as('_a').V().hasLabel('Person').values('Age').as('_b').where('_a',lt('_b')).by('Age').by()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
StepInstructions: [
3+
{
4+
OperatorName: V
5+
},
6+
{
7+
OperatorName: hasLabel,
8+
Arguments: [
9+
Person
10+
]
11+
},
12+
{
13+
OperatorName: as,
14+
Arguments: [
15+
_a
16+
]
17+
},
18+
{
19+
OperatorName: V
20+
},
21+
{
22+
OperatorName: hasLabel,
23+
Arguments: [
24+
Person
25+
]
26+
},
27+
{
28+
OperatorName: values,
29+
Arguments: [
30+
Age
31+
]
32+
},
33+
{
34+
OperatorName: as,
35+
Arguments: [
36+
_b
37+
]
38+
},
39+
{
40+
OperatorName: where,
41+
Arguments: [
42+
_a,
43+
{
44+
OperatorName: lt,
45+
Value: _b
46+
}
47+
]
48+
},
49+
{
50+
OperatorName: by,
51+
Arguments: [
52+
Age
53+
]
54+
},
55+
{
56+
OperatorName: by
57+
}
58+
]
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
StepInstructions: [
3+
{
4+
OperatorName: V
5+
},
6+
{
7+
OperatorName: hasLabel,
8+
Arguments: [
9+
Person
10+
]
11+
},
12+
{
13+
OperatorName: as,
14+
Arguments: [
15+
_a
16+
]
17+
},
18+
{
19+
OperatorName: V
20+
},
21+
{
22+
OperatorName: hasLabel,
23+
Arguments: [
24+
Person
25+
]
26+
},
27+
{
28+
OperatorName: values,
29+
Arguments: [
30+
Age
31+
]
32+
},
33+
{
34+
OperatorName: as,
35+
Arguments: [
36+
_b
37+
]
38+
},
39+
{
40+
OperatorName: where,
41+
Arguments: [
42+
_a,
43+
{
44+
OperatorName: lt,
45+
Value: _b
46+
}
47+
]
48+
},
49+
{
50+
OperatorName: by,
51+
Arguments: [
52+
Age
53+
]
54+
},
55+
{
56+
OperatorName: by
57+
}
58+
]
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
!application/vnd.gremlin-v2.0+json{"requestId":"12345678-9012-3456-7890-123456789012","op":"bytecode","processor":"traversal","args":{"gremlin":{"@type":"g:Bytecode","@value":{"step":[["V"],["hasLabel","Person"],["as","_a"],["V"],["hasLabel","Person"],["values","Age"],["as","_b"],["where","_a",{"@type":"g:P","@value":{"predicate":"lt","value":"_b"}}],["by","Age"],["by"]]}},"aliases":{"g":"g"}}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
!application/vnd.gremlin-v3.0+json{"requestId":"12345678-9012-3456-7890-123456789012","op":"bytecode","processor":"traversal","args":{"gremlin":{"@type":"g:Bytecode","@value":{"step":[["V"],["hasLabel","Person"],["as","_a"],["V"],["hasLabel","Person"],["values","Age"],["as","_b"],["where","_a",{"@type":"g:P","@value":{"predicate":"lt","value":"_b"}}],["by","Age"],["by"]]}},"aliases":{"g":"g"}}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
Script: g.V().hasLabel(_a).as(_b).V().hasLabel(_a).values(_c).as(_d).where(_b,lt(_d)).by(_c).by(),
3+
Bindings: {
4+
_a: Person,
5+
_b: _a,
6+
_c: Age,
7+
_d: _b
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
{
2+
RequestId: 12345678-9012-3456-7890-123456789012,
3+
Operation: bytecode,
4+
Processor: traversal,
5+
Arguments: {
6+
aliases: {
7+
g: g
8+
},
9+
gremlin: {
10+
StepInstructions: [
11+
{
12+
OperatorName: V
13+
},
14+
{
15+
OperatorName: hasLabel,
16+
Arguments: [
17+
Person
18+
]
19+
},
20+
{
21+
OperatorName: as,
22+
Arguments: [
23+
_a
24+
]
25+
},
26+
{
27+
OperatorName: V
28+
},
29+
{
30+
OperatorName: hasLabel,
31+
Arguments: [
32+
Person
33+
]
34+
},
35+
{
36+
OperatorName: values,
37+
Arguments: [
38+
Age
39+
]
40+
},
41+
{
42+
OperatorName: as,
43+
Arguments: [
44+
_b
45+
]
46+
},
47+
{
48+
OperatorName: where,
49+
Arguments: [
50+
_a,
51+
{
52+
OperatorName: lt,
53+
Value: _b
54+
}
55+
]
56+
},
57+
{
58+
OperatorName: by,
59+
Arguments: [
60+
Age
61+
]
62+
},
63+
{
64+
OperatorName: by
65+
}
66+
]
67+
}
68+
}
69+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
RequestId: 12345678-9012-3456-7890-123456789012,
3+
Operation: eval,
4+
Processor: ,
5+
Arguments: {
6+
aliases: {
7+
g: g
8+
},
9+
bindings: {
10+
_a: Person,
11+
_b: _a,
12+
_c: Age,
13+
_d: _b
14+
},
15+
gremlin: g.V().hasLabel(_a).as(_b).V().hasLabel(_a).values(_c).as(_d).where(_b,lt(_d)).by(_c).by()
16+
}
17+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
g.V().hasLabel('Person').as('_a').V().hasLabel('Person').values('Age').as('_b').where('_a',lt('_b')).by('Age').by()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
RequestId: 12345678-9012-3456-7890-123456789012,
3+
Operation: eval,
4+
Processor: ,
5+
Arguments: {
6+
aliases: {
7+
g: g
8+
},
9+
bindings: {
10+
_a: Person,
11+
_b: _a,
12+
_c: Age,
13+
_d: _b
14+
},
15+
gremlin: g.V().hasLabel(_a).as(_b).V().hasLabel(_a).values(_c).as(_d).where(_b,lt(_d)).by(_c).by()
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
Script: g.V().hasLabel(_a).as(_b).V().hasLabel(_a).values(_c).as(_d).where(_b,lt(_d)).by(_c).by(),
3+
Bindings: {
4+
_a: Person,
5+
_b: _a,
6+
_c: Age,
7+
_d: _b
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
g.V().hasLabel('Person').as('_a').V().hasLabel('Person').values('Age').as('_b').where('_a',lt('_b')).by('Age').by()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
{
2+
RequestId: 12345678-9012-3456-7890-123456789012,
3+
Operation: bytecode,
4+
Processor: traversal,
5+
Arguments: {
6+
aliases: {
7+
g: g
8+
},
9+
gremlin: {
10+
StepInstructions: [
11+
{
12+
OperatorName: V
13+
},
14+
{
15+
OperatorName: hasLabel,
16+
Arguments: [
17+
Person
18+
]
19+
},
20+
{
21+
OperatorName: as,
22+
Arguments: [
23+
_a
24+
]
25+
},
26+
{
27+
OperatorName: V
28+
},
29+
{
30+
OperatorName: hasLabel,
31+
Arguments: [
32+
Person
33+
]
34+
},
35+
{
36+
OperatorName: values,
37+
Arguments: [
38+
Age
39+
]
40+
},
41+
{
42+
OperatorName: as,
43+
Arguments: [
44+
_b
45+
]
46+
},
47+
{
48+
OperatorName: where,
49+
Arguments: [
50+
_a,
51+
{
52+
OperatorName: lt,
53+
Value: _b
54+
}
55+
]
56+
},
57+
{
58+
OperatorName: by,
59+
Arguments: [
60+
Age
61+
]
62+
},
63+
{
64+
OperatorName: by
65+
}
66+
]
67+
}
68+
}
69+
}

0 commit comments

Comments
 (0)