
|
If you were logged in you would be able to see more operations.
|
|
|
Issue Links:
|
Related
|
|
|
|
This issue is related to:
|
|
SES-651
DisjunctiveConstraintOptimizer no lon...
|
|
|
|
|
|
Evaluating the following query:
SELECT *
FROM {A} B {C}; D {E}
WHERE
(B = <foo:1> OR B = <foo:2>)
AND
(D = <foo:3> OR D = <foo:4>)
Results in an IllegalArgumentException being thrown in the DisjunctiveConstraintOptimizer:
Exception in thread "main" java.lang.IllegalArgumentException: Node is not a child node: Filter
Or
SameTerm
Var (name=D)
ValueConstant (value=foo:3)
SameTerm
Var (name=D)
ValueConstant (value=foo:4)
Union
Filter
SameTerm
Var (name=B)
ValueConstant (value=foo:1)
Join
StatementPattern
Var (name=A)
Var (name=B)
Var (name=C)
StatementPattern
Var (name=A)
Var (name=D)
Var (name=E)
Filter
SameTerm
Var (name=B)
ValueConstant (value=foo:2)
Join
StatementPattern
Var (name=A)
Var (name=B)
Var (name=C)
StatementPattern
Var (name=A)
Var (name=D)
Var (name=E)
at org.openrdf.query.algebra.QueryModelNodeBase.replaceChildNode(QueryModelNodeBase.java:50)
at org.openrdf.query.algebra.UnaryTupleOperator.replaceChildNode(UnaryTupleOperator.java:85)
at org.openrdf.query.algebra.Projection.replaceChildNode(Projection.java:77)
at org.openrdf.query.algebra.QueryModelNodeBase.replaceWith(QueryModelNodeBase.java:64)
at org.openrdf.query.algebra.evaluation.impl.DisjunctiveConstraintOptimizer$OrSameTermOptimizer.meet(DisjunctiveConstraintOptimizer.java:47)
at org.openrdf.query.algebra.Or.visit(Or.java:31)
at org.openrdf.query.algebra.Filter.visitChildren(Filter.java:60)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetNode(QueryModelVisitorBase.java:528)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetUnaryTupleOperator(QueryModelVisitorBase.java:442)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meet(QueryModelVisitorBase.java:168)
at org.openrdf.query.algebra.Filter.visit(Filter.java:53)
at org.openrdf.query.algebra.UnaryTupleOperator.visitChildren(UnaryTupleOperator.java:75)
at org.openrdf.query.algebra.Filter.visitChildren(Filter.java:61)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetNode(QueryModelVisitorBase.java:528)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetUnaryTupleOperator(QueryModelVisitorBase.java:442)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meet(QueryModelVisitorBase.java:168)
at org.openrdf.query.algebra.Filter.visit(Filter.java:53)
at org.openrdf.query.algebra.UnaryTupleOperator.visitChildren(UnaryTupleOperator.java:75)
at org.openrdf.query.algebra.Projection.visitChildren(Projection.java:67)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetNode(QueryModelVisitorBase.java:528)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetUnaryTupleOperator(QueryModelVisitorBase.java:442)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meet(QueryModelVisitorBase.java:324)
at org.openrdf.query.algebra.Projection.visit(Projection.java:59)
at org.openrdf.query.algebra.UnaryTupleOperator.visitChildren(UnaryTupleOperator.java:75)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meetNode(QueryModelVisitorBase.java:528)
at org.openrdf.query.algebra.helpers.QueryModelVisitorBase.meet(QueryModelVisitorBase.java:342)
at org.openrdf.query.algebra.QueryRoot.visit(QueryRoot.java:35)
at org.openrdf.query.algebra.evaluation.impl.DisjunctiveConstraintOptimizer.optimize(DisjunctiveConstraintOptimizer.java:33)
at org.openrdf.query.algebra.evaluation.util.QueryOptimizerList.optimize(QueryOptimizerList.java:48)
at org.openrdf.sail.memory.MemoryStoreConnection.evaluateInternal(MemoryStoreConnection.java:139)
at org.openrdf.sail.helpers.SailConnectionBase.evaluate(SailConnectionBase.java:220)
at org.openrdf.repository.sail.SailTupleQuery.evaluate(SailTupleQuery.java:48)
at org.openrdf.console.Console.evaluateTupleQuery(Console.java:1400)
at org.openrdf.console.Console.evaluateQuery(Console.java:1289)
at org.openrdf.console.Console.executeCommand(Console.java:349)
at org.openrdf.console.Console.start(Console.java:290)
at org.openrdf.console.Console.main(Console.java:243)
|
|
The optimizer made changes to the parent node (Filter) of the node that was being processed (Or). When returning from the optimization process in one branch of the query tree, optimizing the second branch resulted in this error since this part of the query model had been modified considerably. The optimizer is now triggered by the parent node (Filter).
Priority raised to Critical, since this issue causes exceptions that lead to crashes if not catched.
|
|