Randall Hauch created JCR-3313:
----------------------------------
Summary: JCR TCK Test for expanding column names is too restrictive
Key: JCR-3313
URL: https://issues.apache.org/jira/browse/JCR-3313
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: jackrabbit-jcr-tests, JCR 2.0
Affects Versions: 2.4.1
Reporter: Randall Hauch
The
{{org.apache.jackrabbit.test.api.query.qom.ColumnTest.testExpandColumnsForNodeType()}}
test method issues the following query:
{code:sql}
SELECT s.* FROM [nt:unstructured] AS s
{code}
and then proceeds to check that the columns in the results set. However, there
is at least one and possibly two issues with the expectations in the test.
Firstly, the test assumes that each column name include the selector alias (for
example "{{s.jcr:primaryType}}"); this is not specified or required in the
specification, and since only one selector is used, the column names
technically do not need the selector.
Secondly (and more critically), the test assumes that the result set *only*
contains columns for the single-valued, non-residual property definitions for
the selected node type. Clearly this is overly constraining, since Section
6.7.1 of the JSR-283 specification clearly allows an implementation to return
additional columns (e.g., multi-valued property definitions). Here's the
relevant parts of this section (emphasis mine):
{quote}
A {{Query}} consists of:
...
• A list of zero or more {{Column}}s to include in the tabular view of the
query results. If no columns are specified, the columns available in the
tabular view are implementation determined, but _*minimally include, for each
selector, a column for each single-valued non-residual property of the
selector's node type*_.
{quote}
In the test's query, no columns are specified for the selector '{{s}}', so the
result set must to have _*at a minimum*_ columns for the since-valued
non-residual property defined on the selector's node type, but an
implementation _*can*_ include columns for other properties defined on the
selector's node type. An implementation is even allowed to include columns that
do not map to properties defined on the selector's node type (e.g.,
pseudo-columns that don't really exist as properties).
The test's query uses "{{nt:unstructured}}" for the test node type (if not
overridden by the test environment), and in this case an implementation should
be allowed to include the '{{jcr:mixinTypes}}' multi-valued property.
Therefore, the test is overly strict and should not fail when extra columns are
included. The correct behavior is to test only that the result includes _*at
least*_ a column for each single-valued non-residual property on the selector's
node type.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira