You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Nitin Gupta (Jira)" <ji...@apache.org> on 2020/01/18 11:51:00 UTC

[jira] [Closed] (OAK-8866) coalesce function does not works

     [ 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)