Query hints are partly broken and need to be more thoroughly tested. The history on this is that query hints evolved rather late and have partly replace a previous mechanism that allowed magic predicates to be made visible without the QueryHintRegistry. The code therefore handles query hints correctly in some cases, but mainly those that receive enough attention.
The test suites for query hints are incomplete in the following ways:
- the hints covered (not all query hints are tested);
- the nexting scopes of the SPARQL queries to which they are applied and the scope in which they are given;
- the execution semantics
- specifically marking sure that the query hints are
- transferred onto the PipelineOp and Predicate data structures;
- that the actual execution of the relevant PipelineOp and the AccessPaths reading from those Predicates correctly reflects the intended semantics of the query hint.
- verifying the correct annotation of AST2BOPContext.queryHints
- for some query hints (such as the ChunkSizeHint), the localName of the as given query hint is not the same value that is actually recorded on AST2BOpContext.queryHints.
In particular, problems have been identified with:
- ChunkSizeHint: failure to set the correct name in the global scope on AST2BOpContext.queryHints.
- Query hints for BufferAnnotation were not being set on the Predicate and thus were not being respected by the AccessPath, just by the PipelineOp.