gremlin python обход клона - PullRequest
       59

gremlin python обход клона

2 голосов
/ 09 июля 2020

Я использую gremlin- ​​python для подключения к gremlin-серверу, и я пытаюсь создать запрос постепенно, но я застреваю. У меня есть начальная часть моего запроса, например:

query = g.V().hasLabel('<some_label>')

Теперь я хотел бы сделать несколько вещей с этим запросом, во-первых, мне просто нужен счет:

query.count().next()

Теперь если я сделаю что-нибудь еще, используя переменную query, шаг подсчета находится в обходе, поэтому что-то вроде следующего не работает:

query.out('<some_edge_label>').valueMap().toList()

Глядя на документы, мне кажется, что мне нужно клонировать обход, поэтому я заменил приведенное выше на:

query = g.V().hasLabel('<some_label>')

count_query = query.clone()
count_query.count().next()

Но query все еще имеет шаг count(), когда я печатаю байт-код, даже если я его клонировал. Это ожидаемое поведение gremlin- ​​python? Вот полный пример того, о чем я говорю, печать байт-кода на каждом шаге:

query = g.V().hasLabel('alabel')
print(query)
q_count = query.clone()
print(q_count.count())
print(query)

[['V'], ['hasLabel', 'alabel']]
[['V'], ['hasLabel', 'alabel'], ['count']]
[['V'], ['hasLabel', 'alabel'], ['count']]

Что мне делать, чтобы клонировать / скопировать начало обхода, чтобы я мог повторно использовать его в gremlin- python?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

В версии 3.4.7 (3.3.11) [1] [2] Apache TinkerPop (июнь 2020 г.) были некоторые исправления в области обхода глубокого клонирования. Установка одного из этих драйверов должна помочь.

[1] https://github.com/apache/tinkerpop/blob/master/CHANGELOG.asciidoc

[2] https://issues.apache.org/jira/browse/TINKERPOP-2350

1 голос
/ 09 июля 2020

Похоже, что эта проблема была ошибкой в ​​gremlin- ​​python и была исправлена ​​в версии 3.4.7. Обновление версии решило мою проблему.

...