Miracy Cavendish created TINKERPOP-2961:
-------------------------------------------
Summary: Missing exceptions for unsolvable match pattern, which
may lead to logic inconsistency
Key: TINKERPOP-2961
URL: https://issues.apache.org/jira/browse/TINKERPOP-2961
Project: TinkerPop
Issue Type: Bug
Affects Versions: 3.6.0
Reporter: Miracy Cavendish
Attachments: create-8.log
Hi all! From
[Discord|https://discord.com/channels/838910279550238720/1064868348925583442/threads/1117146194666332250].
We noticed that in some case unsolvable matching will not lead to the exception
"unsolvable pattern" in Gremlin.
For a simple example, in the empty graph, the following query will not lead to
an exception, while it will result in an exception in the GraphModern:
{code:java}
g.V().match(__.as("A").out().as("B"), __.as("C").out().as("B"),
__.as("D").out().as("A"))
{code}
In more complex cases, this missing may lead to a worse result.
For example, in the graph created by attachment _create-8.log_
{code:java}
g.V().match(
__.as("n2").out().as("n1"),
__.as("n2").in().in().in().both().in().as("n1"),
__.as("n2").both().in().in().as("n3"),
__.as("n3").in().both().as("n2"),
__.as("n2").in().in().in().in().both().as("n4"),
__.as("n2").out().both().in().as("n4"), __.as("n3").both().as("n4"),
__.as("n1").in().both().both().both().as("n5")
).dedup().count()
=>306691
g.V().match(
__.as("n2").out().as("n1"),
__.as("n2").in().in().in().both().in().as("n1"),
__.as("n2").both().in().in().as("n3"),
__.as("n3").in().both().as("n2"),
__.as("n4").both().out().out().out().out().as("n2"),
__.as("n2").out().both().in().as("n4"),
__.as("n3").both().as("n4"),
__.as("n1").in().both().both().both().as("n5")
).dedup().count()
=>306075
{code}
The two queries are equivalent, the only difference is the expression of the
traversal "__.as("n4").both().out().out().out().out().as("n2")".
I am not sure which of them results in a correct result, but the logic
inconsistency indicates that the missing exception may cause worse results than
we thought before.
After the discussion with [~spmallette], we believe that it would be better if
detecting the unsolvable pattern before the executing.
{*}In addition{*}, *it would be highly appriciated if someone can reproduce and
confirm the logic inconsistency in the complex cases. I think it may imply
other potential issues of the traversal stratgies.* And if such logic
inconsistency still exist using both solvable equivalent patterns, we will
reduce & report is ASAP.
Best regards,
Joye Mang
--
This message was sent by Atlassian Jira
(v8.20.10#820010)