[
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