You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by ms...@email.cz on 2013/02/25 19:23:16 UTC

Problem with SQL2 query

Hi,

I am trying to rewrite one of my XPath query to SQL2 query.

Original XPath query:
/taxonomyClasses/*[jcr:like(fn:name(),'%\_0')]

SQL2 query:
SELECT * FROM [nt:base] WHERE NAME() LIKE '%\_0' and ISCHILDNODE([/
taxonomyClasses])

Underscore is escaped because it is literal in string constant. I am looking
for nodes which are child nodes of rootnode 
/taxonomyClasses and their node name ends with '_0'

Jackrabbit 2.4.0

But I get:
Caused by: javax.jcr.UnsupportedRepositoryOperationException
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
getNodeNameQuery(LuceneQueryFactory.java:638) [jackrabbit-core-2.4.0.jar:
2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
getComparisonQuery(LuceneQueryFactory.java:624) [jackrabbit-core-2.4.0.jar:
2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
mapConstraintToQueryAndFilter(LuceneQueryFactory.java:400) [jackrabbit-core-
2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
mapConstraintToQueryAndFilter(LuceneQueryFactory.java:359) [jackrabbit-core-
2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
execute(LuceneQueryFactory.java:210) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute
(QueryEngine.java:460) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute
(QueryEngine.java:126) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute
(QueryEngine.java:115) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.QueryObjectModelImpl$2.perform
(QueryObjectModelImpl.java:129) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.QueryObjectModelImpl$2.perform
(QueryObjectModelImpl.java:124) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.session.SessionState.perform
(SessionState.java:216) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.QueryObjectModelImpl.execute
(QueryObjectModelImpl.java:123) [jackrabbit-core-2.4.0.jar:2.4.0]
        at com.idc.publishing.metacop.repository.TimedQueryManager.
executeTimedQuery(TimedQueryManager.java:42) [classes:]
        at com.idc.publishing.metacop.repository.TaxonomyRepositoryImpl.
getTaxonomyList(TaxonomyRepositoryImpl.java:512) [classes:]
        ... 62 more

Is it bug in Jackrabbit? Unsupported NAME() function in SQL2? Anything else?

Thanks

Marek


Re: Problem with SQL2 query

Posted by ms...@email.cz.
>From Jackrabbit sources (LuceneQueryFactory.java:638) it looks like NAME() 
can be used only with equals operator. Otherwise exception is thrown. It is 
the same in Jackrabbit 2.6.0. So I will use workaround with node property.

Marek

-- 
Marek Slama
mslama@email.cz



---------- Původní zpráva ----------
Od: mslama@email.cz
Datum: 25. 2. 2013
Předmět: Problem with SQL2 query

"Hi,

I am trying to rewrite one of my XPath query to SQL2 query.

Original XPath query:
/taxonomyClasses/*[jcr:like(fn:name(),'%\_0')]

SQL2 query:
SELECT * FROM [nt:base] WHERE NAME() LIKE '%\_0' and ISCHILDNODE([/
taxonomyClasses])

Underscore is escaped because it is literal in string constant. I am looking
for nodes which are child nodes of rootnode 
/taxonomyClasses and their node name ends with '_0'

Jackrabbit 2.4.0

But I get:
Caused by: javax.jcr.UnsupportedRepositoryOperationException
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
getNodeNameQuery(LuceneQueryFactory.java:638) [jackrabbit-core-2.4.0.jar:
2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
getComparisonQuery(LuceneQueryFactory.java:624) [jackrabbit-core-2.4.0.jar:
2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
mapConstraintToQueryAndFilter(LuceneQueryFactory.java:400) [jackrabbit-core-
2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
mapConstraintToQueryAndFilter(LuceneQueryFactory.java:359) [jackrabbit-core-
2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.LuceneQueryFactory.
execute(LuceneQueryFactory.java:210) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute
(QueryEngine.java:460) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute
(QueryEngine.java:126) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.lucene.join.QueryEngine.execute
(QueryEngine.java:115) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.QueryObjectModelImpl$2.perform
(QueryObjectModelImpl.java:129) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.QueryObjectModelImpl$2.perform
(QueryObjectModelImpl.java:124) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.session.SessionState.perform
(SessionState.java:216) [jackrabbit-core-2.4.0.jar:2.4.0]
        at org.apache.jackrabbit.core.query.QueryObjectModelImpl.execute
(QueryObjectModelImpl.java:123) [jackrabbit-core-2.4.0.jar:2.4.0]
        at com.idc.publishing.metacop.repository.TimedQueryManager.
executeTimedQuery(TimedQueryManager.java:42) [classes:]
        at com.idc.publishing.metacop.repository.TaxonomyRepositoryImpl.
getTaxonomyList(TaxonomyRepositoryImpl.java:512) [classes:]
        ... 62 more

Is it bug in Jackrabbit? Unsupported NAME() function in SQL2? Anything else?

Thanks

Marek"