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)

Reply via email to