You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2021/11/24 14:17:02 UTC

[jackrabbit-oak] 02/02: OAK-9625 Support ordered index for first value of a multi-valued property, node name, and path

This is an automated email from the ASF dual-hosted git repository.

thomasm pushed a commit to branch OAK-9625
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 50e816e4f40b8c7bae701f4b818d16c89aba6a63
Author: thomasm <th...@apache.org>
AuthorDate: Wed Nov 24 15:16:53 2021 +0100

    OAK-9625 Support ordered index for first value of a multi-valued property, node name, and path
---
 .../apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java    | 7 +++++++
 .../src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt   | 4 ++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
index c2d7b62..4182f4d 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
@@ -724,6 +724,13 @@ public class XPathToSQL2Converter {
             Expression.Cast c = new Expression.Cast(expr, "date");
             read(")");
             return c;
+        } else if ("fn:coalesce".equals(functionName)) {
+            Expression.Function f = new Expression.Function("coalesce");
+            f.params.add(parseExpression());
+            read(",");
+            f.params.add(parseExpression());
+            read(")");
+            return f;
         } else if ("jcr:first".equals(functionName)) {
             Expression.Function f = new Expression.Function("first");
             f.params.add(parseExpression());
diff --git a/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt b/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
index 900200e..d24b313 100644
--- a/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
+++ b/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
@@ -29,9 +29,9 @@
 xpath2sql /jcr:root/content//element(*, nt:base)[fn:path() >= $lastValue] order by fn:path()
 select [jcr:path], [jcr:score], *
   from [nt:base] as a
-  where path() >= @lastValue
+  where path(a) >= @lastValue
   and isdescendantnode(a, '/content')
-  order by path()
+  order by path(a)
   /* xpath ... */
 
 xpath2sql /jcr:root/content//element(*, nt:base)[jcr:first(@vanityPath) >= $lastValue] order by jcr:first(@vanityPath), @jcr:path