2013-04-22 2 views
4

Что случилось с следующим запросом? [Neo4j 1.8.2, встроенный]Cypher: ThisShouldNotHappenError: Этот план выполнения не должен существовать

start merchant = node:merchants('id:10') 
match (merchant)<-[:VALID_AT]-(offer)-[:TARGET_PINCODE]->(pincode)<-[:RESIDES_IN]-(customer) where (offer)-[:VALID_OFFER]->() and offer.endDate > 1 
return count(offer) 

Webadmin возвращает неопределенное

Java Exception:

org.neo4j.helpers.ThisShouldNotHappenError: Developer: Andres claims that: This execution plan should not exist. at org.neo4j.cypher.internal.commands.PathExpression$$anonfun$4.apply(PathExpression.scala:47) at org.neo4j.cypher.internal.commands.PathExpression$$anonfun$4.apply(PathExpression.scala:46) at scala.collection.LinearSeqOptimized$class.exists(LinearSeqOptimized.scala:79) at scala.collection.immutable.List.exists(List.scala:45) at org.neo4j.cypher.internal.commands.PathExpression.apply(PathExpression.scala:46) at org.neo4j.cypher.internal.commands.PathExpression.apply(PathExpression.scala:31) at org.neo4j.cypher.internal.commands.NonEmpty.isMatch(Predicate.scala:283) at org.neo4j.cypher.internal.commands.And.isMatch(Predicate.scala:83) at org.neo4j.cypher.internal.pipes.matching.FilteringIterable$FilteringIterator.spoolToNextInLine(FilteringIterable.scala:55) at org.neo4j.cypher.internal.pipes.matching.FilteringIterable$FilteringIterator.(FilteringIterable.scala:34) at org.neo4j.cypher.internal.pipes.matching.FilteringIterable.iterator(FilteringIterable.scala:72) at org.neo4j.cypher.internal.pipes.matching.FilteringIterable.iterator(FilteringIterable.scala:27) at scala.collection.JavaConversions$IterableWrapperTrait$class.iterator(JavaConversions.scala:557) at scala.collection.JavaConversions$IterableWrapper.iterator(JavaConversions.scala:583) at scala.collection.JavaConversions$IterableWrapper.iterator(JavaConversions.scala:583) at org.neo4j.kernel.impl.traversal.TraversalBranchWithState.expandRelationshipsWithoutChecks(TraversalBranchWithState.java:70) at org.neo4j.kernel.impl.traversal.TraversalBranchImpl.expandRelationships(TraversalBranchImpl.java:104) at org.neo4j.kernel.impl.traversal.StartNodeTraversalBranch.next(StartNodeTraversalBranch.java:47) at org.neo4j.kernel.impl.traversal.AsOneStartBranch.next(AsOneStartBranch.java:100) at org.neo4j.kernel.PreorderDepthFirstSelector.next(PreorderDepthFirstSelector.java:52) at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:65) at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:34) at org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55) at scala.collection.JavaConversions$JIteratorWrapper.hasNext(JavaConversions.scala:574) at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:371) at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:371) at scala.collection.Iterator$$anon$22.hasNext(Iterator.scala:388) at scala.collection.Iterator$class.foreach(Iterator.scala:660) at scala.collection.Iterator$$anon$22.foreach(Iterator.scala:382) at org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala:76) at org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:37) at org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl$$anonfun$6.apply(ExecutionPlanImpl.scala:127) at org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl$$anonfun$6.apply(ExecutionPlanImpl.scala:125) at org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl.execute(ExecutionPlanImpl.scala:33) at org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:59) at org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:63) at org.neo4j.cypher.javacompat.ExecutionEngine.execute(ExecutionEngine.java:79)

Примечание: возвратный предложение вместо подсчета возврата (предложение) работает

+0

Жаль, что я не смог бы это сделать – Tyrsius

+0

99% уверен, что это было исправлено в 1.9. :( –

+0

:-(Уэс, я уверен, что вы бы упомянули об этом, но есть ли какое-нибудь обходное решение? Это самая маленькая часть большего запроса, поэтому подсчет предложений в коде не будет работать очень хорошо. – Luanne

ответ

0

Обновлен до Neo4j 1.9 RC1, и проблема больше не существует

+0

Обход проблемы 1.8.2: переместить (предложение) - [: VALID_OFFER] ->() в предложение соответствия. start merchant = node: merchants ('id: 10') match (merchant) <- [: VALID_AT] - (предложение) - [: TARGET_PINCODE] -> (pincode) <- [: RESIDES_IN] - (клиент), (предложение) - [: VALID_OFFER] ->() WHERE offer.endDate> 1 номер возврата (предложение) – Luanne

Смежные вопросы