shawnsmith commented on issue #2650:
URL: https://github.com/apache/jena/issues/2650#issuecomment-2302875188

   Thanks for the quick feedback!
   
   Fwiw I tested this change today, and it's not complete:
   ```java
   @Override
   public Expr transform(ExprAggregator eAgg) {
       return eAgg.applyNodeTransform(nodeTransform);
   }
   ```
   The aggregators in the `Query.aggregators` field also need to be 
transformed, but aren't. Something along these lines:
   ```patch
   diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
   index b461a0a7e0..8d54370290 100644
   --- 
a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
   +++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java
   @@ -37,6 +37,7 @@ import org.apache.jena.shared.impl.PrefixMappingImpl;
    import org.apache.jena.sparql.ARQException;
    import org.apache.jena.sparql.core.*;
    import org.apache.jena.sparql.expr.Expr;
   +import org.apache.jena.sparql.expr.ExprAggregator;
    import org.apache.jena.sparql.expr.ExprTransform;
    import org.apache.jena.sparql.expr.ExprTransformer;
    import org.apache.jena.sparql.expr.ExprVar;
   @@ -78,6 +79,7 @@ public class QueryTransformOps {
            if (q2.getOrderBy() != null)
                mutateSortConditions(q2.getOrderBy(), exprTransform);
            mutateQueryPattern(q2, transform, exprTransform);
   +        transformAggregators(query, q2, exprTransform);
            if ( query.isQueryResultStar() ) {
                // Reset internal to only what now can be seen.
                q2.resetResultVars();
   @@ -111,6 +113,12 @@ public class QueryTransformOps {
            }
        }
    
   +    private static void transformAggregators(Query query, Query newQuery, 
ExprTransform exprTransform) {
   +        for (ExprAggregator aggregator : query.getAggregators()) {
   +            newQuery.getAggregators().add((ExprAggregator) 
exprTransform.transform(aggregator));
   +        }
   +    }
   +
        // Do the result form part of the cloned query.
        private static void mutateByQueryType(Query q2, ElementTransform 
transform, ExprTransform exprTransform) {
            switch(q2.queryType()) {
   @@ -300,9 +308,6 @@ public class QueryTransformOps {
                    for (String x : desc.getNamedGraphURIs())
                        newQuery.addNamedGraphURI(x);
                }
   -
   -            // Aggregators.
   -            newQuery.getAggregators().addAll(query.getAggregators());
            }
    
            @Override
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to