Author: thomasm
Date: Fri Apr 28 08:53:12 2017
New Revision: 1793013
URL: http://svn.apache.org/viewvc?rev=1793013&view=rev
Log:
OAK-5949 XPath: string literals parsed as identifiers
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java?rev=1793013&r1=1793012&r2=1793013&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
Fri Apr 28 08:53:12 2017
@@ -1243,14 +1243,17 @@ public class SQL2Parser {
readDecimal(i - 1, i);
return;
case CHAR_BRACKETED:
+ currentTokenQuoted = true;
readString(i, ']');
currentTokenType = IDENTIFIER;
currentToken = currentValue.getValue(Type.STRING);
return;
case CHAR_STRING:
+ currentTokenQuoted = true;
readString(i, '\'');
return;
case CHAR_QUOTED:
+ currentTokenQuoted = true;
readString(i, '\"');
if (supportSQL1) {
// for SQL-2, this is a literal, as defined in
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java?rev=1793013&r1=1793012&r2=1793013&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/xpath/XPathToSQL2Converter.java
Fri Apr 28 08:53:12 2017
@@ -980,6 +980,7 @@ public class XPathToSQL2Converter {
readDecimal(i - 1, i);
return;
case CHAR_STRING:
+ currentTokenQuoted = true;
if (chars[i - 1] == '\'') {
readString(i, '\'');
} else {
Modified:
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt?rev=1793013&r1=1793012&r2=1793013&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt
Fri Apr 28 08:53:12 2017
@@ -24,6 +24,10 @@
# * new tests are typically be added on top, after the syntax docs
# * use ascii character only
+# OAK-5949
+explain [SELECT] * from [nt:base]
+java.text.ParseException: Query: explain [SELECT](*)* from [nt:base];
expected: SELECT
+
commit / + "testRoot": { }
commit /testRoot + "parents": { "p0": {"id": "0"}, "p1": {"id": "1"}, "p2":
{"id": "2"}}
commit /testRoot + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3":
{"p": "2"}, "c4": {"p": "3"}}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt?rev=1793013&r1=1793012&r2=1793013&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/xpath.txt
Fri Apr 28 08:53:12 2017
@@ -24,6 +24,15 @@
# * new tests are typically be added on top, after the syntax docs
# * use ascii character only
+# OAK-5949
+
+xpath2sql
/jcr:root/home//element(*,rep:Authorizable)[jcr:like(@rep:authorizableId,'@')]
+select [jcr:path], [jcr:score], *
+ from [rep:Authorizable] as a
+ where [rep:authorizableId] like '@'
+ and isdescendantnode(a, '/home')
+ /* xpath ... */
+
# OAK-4387
xpath2sql
/jcr:root/content/text/element/rep:excerpt/jcr:content//element(*,nt:unstructured)
select [jcr:path], [jcr:score], *