Hi all,

 

I encountered a problem working with a SQL request :

 

SELECT lgw:contractorType.lgw:title FROM lgw:contractorType, lgw:contractType 

WHERE lgw:contractType.jcr:uuid= 'b744b41b-8425-4008-99a6-ce8456d87c4e' 

AND lgw:contractorType.jcr:uuid=lgw:contractType.lgw:internalContractor

 

After debug, here is the analysis. The error is : 
javax.jcr.query.InvalidQueryException

But actually, the error is a NullPointerException.

 

The problem comes from the join.

During the AndExpression evaluation, it evaluates the two AndOperands. The 
first one is :

 

lgw:contractType.jcr:uuid= 'b744b41b-8425-4008-99a6-ce8456d87c4e'

 

and everything goes fine. The second one is :

 

lgw:contractorType.jcr:uuid=lgw:contractType.lgw:internalContractor

 

and there it fails because during the evaluation,it calls 
createRelationQueryNode in JCRSQLQueryBuilder and in the first case, no 
problem, but in the second case it fails because the first thing done in this 
method is : String stringValue = literal.getValue();

 

But in the second case, there is no literal value, it deals with an Identifier 
instead of a literal, but it seems to try and evaluate  it as a literal. And as 
it's not a literal, the ASTLiteral[] value element is not filled, so it's null. 
Then, value[0].getValue() raises the NullPointerException.

 

Is it a bug? Or is join not implemented? There is a getIdentifier (SimpleNode 
node) method in the anonymous DefaultParserVisitor class defined in the 
visit(ASTPredicate node, Object data) of JCRSQLQueryBuilder, but cannot step 
into it.

 

Frederic Esnault

Reply via email to