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

Philipp Bunge updated JCR-2417:
-------------------------------

    Attachment:     (was: contains_with_bind_variable.patch)

> RepositoryException when using BindVariables in JCR-SQL2 CONTAINS
> -----------------------------------------------------------------
>
>                 Key: JCR-2417
>                 URL: https://issues.apache.org/jira/browse/JCR-2417
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: query
>    Affects Versions: 2.0-beta3, 2.0.0
>            Reporter: Philipp Bunge
>         Attachments: contains_with_bind_variable.patch
>
>
> When using a BindVariable in a JCR-SQL2 CONTAINS constraint, the query fails 
> with a RepositoryException.
> For example:
> String sql = "SELECT * FROM [nt:unstructured] WHERE ISCHILDNODE([/testroot]) 
> AND CONTAINS(mytext, $searchExpression)";
> Query q = superuser.getWorkspace().getQueryManager().createQuery(sql, 
> Query.JCR_SQL2);
> q.bindValue("searchExpression", 
> superuser.getValueFactory().createValue("fox"));
> q.execute();
> Results in:
> javax.jcr.RepositoryException: Unknown static operand type: 
> org.apache.jackrabbit.spi.commons.query.qom.bindvariablevaluei...@591a4d
>         at 
> org.apache.jackrabbit.core.query.lucene.LuceneQueryFactoryImpl.create(LuceneQueryFactoryImpl.java:215)
>         at 
> org.apache.jackrabbit.core.query.lucene.constraint.FullTextConstraint.<init>(FullTextConstraint.java:42)
>         at 
> org.apache.jackrabbit.core.query.lucene.constraint.ConstraintBuilder$Visitor.visit(ConstraintBuilder.java:175)
>         at 
> org.apache.jackrabbit.spi.commons.query.qom.FullTextSearchImpl.accept(FullTextSearchImpl.java:117)
>         at 
> org.apache.jackrabbit.core.query.lucene.constraint.ConstraintBuilder$Visitor.visit(ConstraintBuilder.java:137)
>         at 
> org.apache.jackrabbit.spi.commons.query.qom.AndImpl.accept(AndImpl.java:72)
>         at 
> org.apache.jackrabbit.core.query.lucene.constraint.ConstraintBuilder.create(ConstraintBuilder.java:82)
>         at 
> org.apache.jackrabbit.core.query.lucene.QueryObjectModelImpl.execute(QueryObjectModelImpl.java:109)
>         at 
> org.apache.jackrabbit.core.query.QueryImpl.execute(QueryImpl.java:127)
> I tried to fix this issue but there is no way to access the BindVariables 
> from the ConstraintBuilder from the LuceneQueryFactoryImpl and the 
> ConstraintBuilder just passes the FullTextSearchImpl QOM subtree to the 
> factory (via FullTextConstraint constructor) without any further visiting. If 
> the signature would be "LuceneQueryFactoryImpl#create(FullTextSearchImpl fts, 
> Value searchExpression)" we could visit the StaticOperand in the 
> ConstraintBuilder and then modify the FullTextSearchImpl constructor 
> accordingly, but this would imply that LuceneQueryFactory interface would 
> need to be change accordingly and I don't know what that would mean.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to