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

Nitin Gupta closed OAK-8866.
----------------------------

> coalesce function does not works
> --------------------------------
>
>                 Key: OAK-8866
>                 URL: https://issues.apache.org/jira/browse/OAK-8866
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>            Reporter: Nitin Gupta
>            Priority: Major
>
> Create and index definition with coalesce([foo2],[foo])
>  
> Expected behavior - query with filter condition such as "where 
> coalesce([foo2],[foo]) ='XYZ' " should work - but it doesn't. 
>  coalesce([foo2],[foo]) seems to return the result for [foo2] only and in 
> case [foo2] is null - then it returns [foo] - but doesn't return the expected 
> value of [foo2]+[foo]
>  
> Test Case to reproduce ->
>  
> {code:java}
> public class FunctionIndexTest extends AbstractQueryTest {
> .
> .
> .
> @Test
> public void testCoalesce() throws Exception {
>     IndexDefinitionBuilder idxb = new IndexDefinitionBuilder().noAsync();
>     idxb.indexRule("nt:base").property("foo", null).function(
>             "coalesce([foo2], [foo])"
>     ).ordered();
>     Tree idx = root.getTree("/").getChild("oak:index").addChild("test1");
>     idxb.build(idx);
>     root.commit();
>     Tree rootTree = root.getTree("/");
>     Tree n1 = rootTree.addChild("a");
>     n1.setProperty("foo2", "hello");
>     n1.setProperty("foo","world");
>     n1 = rootTree.addChild("b");
>     n1.setProperty("foo2", "aaaa");
>     n1.setProperty("foo","bbbb");
>     n1 = rootTree.addChild("c");
>     n1.setProperty("foo2", "test");
>     n1.setProperty("foo","test");
>     n1 = rootTree.addChild("d");
>     n1.setProperty("foo2", "helloworld");
>     n1.setProperty("foo","test");
>     root.commit();
>     String query = "select [jcr:path] from [nt:base] where 
> coalesce([foo2],[foo]) = 'helloworld'";
>     List<String> result = executeQuery(query, SQL2);
>     // This should give /a in result
>     // but instead it gives /d and fails
>     assertEquals(asList("/a"), result);
> }
> .
> .
> .
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to