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 2012/06/05 10:58:34 UTC

svn commit: r1346301 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java test/resources/org/apache/jackrabbit/oak/query/queryXpathTest.txt

Author: thomasm
Date: Tue Jun  5 08:58:34 2012
New Revision: 1346301

URL: http://svn.apache.org/viewvc?rev=1346301&view=rev
Log:
OAK-28 Query implementation - support "explain" for XPath queries

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java
    jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryXpathTest.txt

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java?rev=1346301&r1=1346300&r2=1346301&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java Tue Jun  5 08:58:34 2012
@@ -57,6 +57,10 @@ public class XPathToSQL2Converter {
      */
     public String convert(String query) throws ParseException {
         // TODO verify this is correct
+        boolean explain = query.startsWith("explain ");
+        if (explain) {
+            query = query.substring("explain ".length());
+        }
         if (!query.startsWith("/")) {
             query = "/jcr:root/" + query;
         }
@@ -196,7 +200,11 @@ public class XPathToSQL2Converter {
         if (!currentToken.isEmpty()) {
             throw getSyntaxError("<end>");
         }
-        StringBuilder buff = new StringBuilder("select ");
+        StringBuilder buff = new StringBuilder();
+        if (explain) {
+            buff.append("explain ");
+        }
+        buff.append("select ");
         buff.append("[jcr:path], [jcr:score], ");
         if (columnList.isEmpty()) {
             buff.append('*');

Modified: jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryXpathTest.txt
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryXpathTest.txt?rev=1346301&r1=1346300&r2=1346301&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryXpathTest.txt (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryXpathTest.txt Tue Jun  5 08:58:34 2012
@@ -36,6 +36,9 @@ select [jcr:path], [jcr:score], * from [
 xpath /jcr:root/test/text()
 select [jcr:path], [jcr:score], * from [nt:base] where issamenode('/test/jcr:xmltext')
 
+xpath explain //*[@*='x']
+explain select [jcr:path], [jcr:score], * from [nt:base] where [*] = 'x'
+
 xpath //*[@*='x']
 select [jcr:path], [jcr:score], * from [nt:base] where [*] = 'x'