[
https://issues.apache.org/jira/browse/JENA-1365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16057397#comment-16057397
]
Andy Seaborne commented on JENA-1365:
-------------------------------------
The related formatter change is:
https://github.com/apache/jena/commit/f19d8b267e1976f655e2c7509e6c7ce67c0c9496#diff-9aaed90671f0c690e61dc6dcf937cefeL240
when the formatter for UNION should look like:
{noformat}
@Override
public void visit(ElementUnion el) {
if ( el.getElements().size() == 1 ) {
// If this is an element of just one, just do it in-place
return ;
}
. . .
{noformat}
> QueryBuilder can build an invalid union-of-one query.
> -----------------------------------------------------
>
> Key: JENA-1365
> URL: https://issues.apache.org/jira/browse/JENA-1365
> Project: Apache Jena
> Issue Type: Bug
> Components: QueryBuilder
> Affects Versions: Jena 3.3.0
> Reporter: Claude Warren
> Assignee: Claude Warren
>
> From email chain betwen Claude and Andy
> is the union-of-one still legal during the construction of the query?
> Its illegal in a query - UNION is
> {..} UNION {..} UNION {..}
> The
> expected usage in the builder is:
> {noformat}
> builder.addUnion( <select-type-statement> ).addUnion(
> <select-type-statement>)
> {noformat}
> Currently the code builds a union-of-one and adds the next union to it.
> check to ensure that a union-of-one is not generated in the
> final result.
> At a minimum it an error to generate a union of one.
> So either, throw an expection or generate "{ pattern }" (including inside {})
> which is the moral equivalent.
> IMO The second is nicer. Tat is what I changed the formatter to do so at
> least it generated something even if it is changing the query a bit (round
> trip checking will fail but then it fails currently as it can't be parsed at
> all)
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)