Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-3313

JCR TCK Test for expanding column names is too restrictive



    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.4.1
    • 2.5.1
    • None


      The 'org.apache.jackrabbit.test.api.query.qom.ColumnTest.testExpandColumnsForNodeType()' test method issues the following query:

      SELECT s.* FROM [nt:unstructured] AS s

      and then proceeds to check that the columns in the results set. However, a problem with the expectations in the test: 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:

      A Query consists of:
      • A list of zero or more Columns 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.

      In the test's query, no columns are specified for the selector 's', so the result set must to have AT A MINIMUM the columns for the single-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.




            Unassigned Unassigned
            rhauch Randall Hauch
            1 Vote for this issue
            4 Start watching this issue