[ 
https://issues.apache.org/jira/browse/TINKERPOP-2800?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stephen Mallette updated TINKERPOP-2800:
----------------------------------------
    Description: 
Given:

{code}
g = TinkerGraph.open().traversal()
g.addV().property(list,"variant","2wd").property(list,"variant","4wd").iterate()
g.addV().property(list,"variant","2wd").property(list,"variant","6wd").iterate()
g.addV().property(list,"variant","8wd").property(list,"variant","6wd").iterate()

// 

gremlin> 
g.V().has("variant",startingWith("2").and(startingWith("4"))).valueMap()
==>[variant:[2wd,4wd]]
gremlin> g.V().or(has("variant",startingWith("2").and(startingWith("4"))),
......1>          
has("variant",startingWith("2").and(startingWith("6")))).valueMap()
gremlin> g.V().union(has("variant",startingWith("2").and(startingWith("4"))),
......1>             
has("variant",startingWith("2").and(startingWith("6")))).valueMap()
gremlin> 
g.V().has("variant",startingWith("2").and(startingWith("4"))).aggregate("x").fold().
......1>   
V().has("variant",startingWith("2").and(startingWith("6"))).aggregate("x").fold().
......2>   cap("x").unfold().valueMap()
==>[variant:[2wd,4wd]]
==>[variant:[2wd,6wd]]
{code}

The {{HasContainer}} doesn't seem to get applied properly in the case of 
multi-properties. It sorta just treats properties as {{single}} in those cases.

The consistency issue seems best resolved by following the latter cases and 
making it so that {{and()}} operates against a single property and prefer that 
multiproperties be resolved over multiple {{has()}}:

{code}
gremlin> g.V().has("variant", 
startingWith("2").and(startingWith("4"))).valueMap()
gremlin> g.V().has("variant", 
startingWith("2")).has('variant',startingWith("4")).valueMap()
==>[variant:[2wd,4wd]]
gremlin> g.V().has("variant", 
startingWith("2")).or(has('variant',startingWith("4")),has('variant',startingWith("6"))).valueMap()
==>[variant:[2wd,4wd]]
==>[variant:[2wd,6wd]]
{code}

  was:
Given:

{code}
g = TinkerGraph.open().traversal()
g.addV().property(list,"variant","2wd").property(list,"variant","4wd").iterate()
g.addV().property(list,"variant","2wd").property(list,"variant","6wd").iterate()
g.addV().property(list,"variant","8wd").property(list,"variant","6wd").iterate()

// 

gremlin> 
g.V().has("variant",startingWith("2").and(startingWith("4"))).valueMap()
==>[variant:[2wd,4wd]]
gremlin> g.V().or(has("variant",startingWith("2").and(startingWith("4"))),
......1>          
has("variant",startingWith("2").and(startingWith("6")))).valueMap()
gremlin> g.V().union(has("variant",startingWith("2").and(startingWith("4"))),
......1>             
has("variant",startingWith("2").and(startingWith("6")))).valueMap()
gremlin> 
g.V().has("variant",startingWith("2").and(startingWith("4"))).aggregate("x").fold().
......1>   
V().has("variant",startingWith("2").and(startingWith("6"))).aggregate("x").fold().
......2>   cap("x").unfold().valueMap()
==>[variant:[2wd,4wd]]
==>[variant:[2wd,6wd]]
{code}

The {{HasContainer}} doesn't seem to get applied properly in the case of 
multi-properties. It sorta just treats properties as {{single}} in those cases.


> ConnectiveP doesn't get evaluated right for list/set cardinality
> ----------------------------------------------------------------
>
>                 Key: TINKERPOP-2800
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2800
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.5.4
>            Reporter: Stephen Mallette
>            Priority: Major
>
> Given:
> {code}
> g = TinkerGraph.open().traversal()
> g.addV().property(list,"variant","2wd").property(list,"variant","4wd").iterate()
> g.addV().property(list,"variant","2wd").property(list,"variant","6wd").iterate()
> g.addV().property(list,"variant","8wd").property(list,"variant","6wd").iterate()
> // 
> gremlin> 
> g.V().has("variant",startingWith("2").and(startingWith("4"))).valueMap()
> ==>[variant:[2wd,4wd]]
> gremlin> g.V().or(has("variant",startingWith("2").and(startingWith("4"))),
> ......1>          
> has("variant",startingWith("2").and(startingWith("6")))).valueMap()
> gremlin> g.V().union(has("variant",startingWith("2").and(startingWith("4"))),
> ......1>             
> has("variant",startingWith("2").and(startingWith("6")))).valueMap()
> gremlin> 
> g.V().has("variant",startingWith("2").and(startingWith("4"))).aggregate("x").fold().
> ......1>   
> V().has("variant",startingWith("2").and(startingWith("6"))).aggregate("x").fold().
> ......2>   cap("x").unfold().valueMap()
> ==>[variant:[2wd,4wd]]
> ==>[variant:[2wd,6wd]]
> {code}
> The {{HasContainer}} doesn't seem to get applied properly in the case of 
> multi-properties. It sorta just treats properties as {{single}} in those 
> cases.
> The consistency issue seems best resolved by following the latter cases and 
> making it so that {{and()}} operates against a single property and prefer 
> that multiproperties be resolved over multiple {{has()}}:
> {code}
> gremlin> g.V().has("variant", 
> startingWith("2").and(startingWith("4"))).valueMap()
> gremlin> g.V().has("variant", 
> startingWith("2")).has('variant',startingWith("4")).valueMap()
> ==>[variant:[2wd,4wd]]
> gremlin> g.V().has("variant", 
> startingWith("2")).or(has('variant',startingWith("4")),has('variant',startingWith("6"))).valueMap()
> ==>[variant:[2wd,4wd]]
> ==>[variant:[2wd,6wd]]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to