[ 
https://issues.apache.org/jira/browse/OAK-295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13454052#comment-13454052
 ] 

Thomas Mueller commented on OAK-295:
------------------------------------

In the JCR 2.0 spec, there is a footnote for "SQL-legal characters": 
"See the SQL:92 rules for <regular identifier> (in ISO/IEC 9075:1992 ยง5.2 
<token> and <separator>)."

According to the SQL-92 spec at 
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt, a <regular 
identifier> seems to roughly match a Java identifier:

<regular identifier> ::= <identifier body>
<identifier body> ::= <identifier start> [ { <underscore> | <identifier part> 
}... ]
<identifier start> ::= !! See the Syntax Rules
<identifier part> ::= <identifier start> | <digit>

Syntax Rules
1) An <identifier start> is one of:
a) A <simple Latin letter>; or
b) A character that is identified as a letter in the character repertoire 
identified by the <module character set specification> or by the <character set 
specification>; or
c) A character that is identified as a syllable  in the character repertoire 
identified by the <module character set specification> or by the <character set 
specification>; or
d) A character that is identified as an ideograph in the character repertoire 
identified by the <module character set specification> or by the <character set 
specification>.

I think the path [/testroot/'a b'] should therefore fail to parse. That would 
more closely match the spec than the current behavior, which is: it is parsed 
as "/testroot/a b". Also, the path [/testroot/a b] should fail to parse, as 
well as [a[x]a]. And if I read the spec correctly, the path [/test/root] is 
actually also illegal, because '/' is not a legal <regular identifier>.

Of course this can cause backward compatibility problems (queries that used to 
work in Jackrabbit 2.x may fail in Oak).
                
> Jackrabbit query with spaces in node names
> ------------------------------------------
>
>                 Key: OAK-295
>                 URL: https://issues.apache.org/jira/browse/OAK-295
>             Project: Jackrabbit Oak
>          Issue Type: Sub-task
>            Reporter: Alex Parvulescu
>
> I'm looking at {{SQL2PathEscapingTest#testGetChildrenApiDirect}} - one of 2 
> failing tests imported from the Jackrabbit query test suite.
> The query that doesn't work looks like
> {{select [selector].* from [{http://www.jcp.org/jcr/nt/1.0}base] AS 
> [selector] where ISCHILDNODE([selector], [/testroot/a b])}}
> This query is build using the {{QueryObjectModelFactory}} but then it gets 
> transformed to its sql2 query equivalent string and then parsed back in 
> again, so the {{SQL2Parser}} in oak gets confused and the path {{/testroot/a 
> b}} gets mangled into {{/testroot/ab}}.
> I see one of 2 issues as the coulprit
>  - the path is not quoted, maybe that is why the {{SQL2Parser}} can't extract 
> it properly. In this case who should handle quoting?
> or
>  - the SQL2Parser should be able to extract the path properly, it is 
> surrounded by [] tokens anyway.
> thoughts?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to