stephen mallette created TINKERPOP-1859: -------------------------------------------
Summary: Complex instance of P not serializing to bytecode properly
Key: TINKERPOP-1859
URL: https://issues.apache.org/jira/browse/TINKERPOP-1859
Project: TinkerPop
Issue Type: Bug
Components: python
Affects Versions: 3.2.7
Reporter: stephen mallette
Not sure what's happening but this traversal does not return any results with
gremlin-python:
{code}
gremlin> g.V().hasLabel("person").has("age",
P.not(P.lte(10).and(P.not(P.between(11,
20)))).and(P.lt(29).or(P.eq(35)))).values("name")
==>vadas
==>peter
{code}
When looking at the bytecode the python bytecode is different from the java
bytecode. The java bytecode for the predicate is:
{code}
{
"@type": "g:P",
"@value": {
"predicate": "and",
"value": [{
"@type": "g:P",
"@value": {
"predicate": "or",
"value": [{
"@type": "g:P",
"@value": {
"predicate": "gt",
"value": {
"@type": "g:Int32",
"@value": 10
}
}
}, {
"@type": "g:P",
"@value": {
"predicate": "and",
"value": [{
"@type": "g:P",
"@value": {
"predicate":
"gte",
"value": {
"@type": "g:Int32",
"@value": 11
}
}
}, {
"@type": "g:P",
"@value": {
"predicate":
"lt",
"value": {
"@type": "g:Int32",
"@value": 20
}
}
}]
}
}]
}
}, {
"@type": "g:P",
"@value": {
"predicate": "or",
"value": [{
"@type": "g:P",
"@value": {
"predicate": "lt",
"value": {
"@type": "g:Int32",
"@value": 29
}
}
}, {
"@type": "g:P",
"@value": {
"predicate": "eq",
"value": {
"@type": "g:Int32",
"@value": 35
}
}
}]
}
}]
}
}
{code}
The python bytecode is:
{code}
{
"@type": "g:P",
"@value": {
"predicate": "and",
"value": [{
"@type": "g:P",
"@value": {
"predicate": "not",
"value": {
"@type": "g:P",
"@value": {
"predicate": "and",
"value": [{
"@type": "g:P",
"@value": {
"predicate":
"lte",
"value": {
"@type": "g:Int64",
"@value": 10
}
}
}, {
"@type": "g:P",
"@value": {
"predicate":
"not",
"value": {
"@type": "g:P",
"@value": {
"predicate": "between",
"value": [{
"@type": "g:Int64",
"@value": 11
}, {
"@type": "g:Int64",
"@value": 20
}]
}
}
}
}]
}
}
}
}, {
"@type": "g:P",
"@value": {
"predicate": "or",
"value": [{
"@type": "g:P",
"@value": {
"predicate": "lt",
"value": {
"@type": "g:Int64",
"@value": 29
}
}
}, {
"@type": "g:P",
"@value": {
"predicate": "eq",
"value": {
"@type": "g:Int64",
"@value": 35
}
}
}]
}
}]
}
}
{code}
This fix should likely be applied as part of TINKERPOP-1857 (or after it is
merged) as there were a few modifications in that branch around {{P}} to
resolve other issues.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
