Thank you for the proposal Valentyn. If I understand correctly, you are proposing to add a configuration to describe the expected projection from a query that returns a Vertex. But this use case is already satisfied with project() and select() operators that are provided by Gremlin. A user who wants specific set of properties to be projected out (I.e. the CUSTOM configuration) could use the existing operators to get the desired result instead of using g.V() in a detached mode. We should also deprecate the detached mode at some stage but that is a separate discussion.
Hence, I don’t fully understand the need to add this additional configuration. On Mon, Oct 3, 2022 at 6:45 PM Valentyn Kahamlyk <valent...@bitquilltech.com.invalid> wrote: > Hi all, > > I would like to propose a solution for handling properties on Elements. > > Problem > When a user writes `g.V()` they get back a Vertex object. The problem is > that depending on the execution context of the traversal, the result could > be quite different, with or without properties. > The other side of the problem is fat vertexes with lots of properties, > making it necessary to have a way to limit the size of the transmitted data > and download only what is needed. > More details in Stephen's post > https://lists.apache.org/thread/xltcon4zxnwq4fyw2r2126syyrqm8spy. > Same issue with Edges and VertexProperties. > > Proposed solution > Implement new finalization strategy DetachStrategy(mode, vertexKeys, > edgeKeys, vertexPropertyKeys, fatVertexHandling) where mode is one of ALL, > REFERENCE or CUSTOM. > fatVertexHandling is an additional setting like "skip binary fields", "skip > arrays", "limit string length", "limit nesting". > vertexKeys, edgeKeys and vertexPropertyKeys are arrays of key names, data > types and options like type conversion handling (int -> float). Also these > fields can be replaced with a single `keys` parameter, this makes sense > when we end up with fields that do not belong to any Element. > > Pros: > - New strategy is mostly compatible with existing GLV's and server. > > Cons: > - Limited possibility to extend in the context of adding a schema. > > What do you think about this topic, does it make sense? > > Thank, Valentyn > -- Divij Vaidya