Hi all,

I'm working on moving forward with bytecode removal that was mentioned 
previously in this thread. When traversals create their Gremlin string 
representations, I think it would be best if, all Strings, numerics, nulls, 
other primitive types, all enums (like cardinality, column, direction etc), 
datetime, uuid, graph elements (Vertex, Edge, Properties) will be part of 
string representation of traversal and if all collections (array/list, map, 
set), complex types and some graph specific objects (path, graph, tree) will be 
send as query parameters. This will keep the request understandable when you 
need to transfer a large amount of data.

I'm still trying to think through custom types and how those will work because 
the custom serializer mechanism is a bit burdensome, but for now it will stay 
as it is. Perhaps, some some syntax could be added to allow for custom(String 
typeName, String value) in the grammar. Or, we could perhaps just recommend 
`call` step.

One issue I'm noticing in doing this work is that there are some compatibility 
issues between gremlin-groovy and gremlin-language where the string I'm 
generating is only compatible with the latter for certain cases. For example, 
the suffix for BigDecimal is not same, 'g' for groovy and 'm' for 
gremlin-language. I'm thinking we could pass the generated gremlin-language 
string through the new translators that are built on the grammar and use them 
to produce appropriate groovy.

Regards, 
Valentyn

Reply via email to