You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/11/16 15:57:07 UTC

svn commit: r1202731 - /incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java

Author: andy
Date: Wed Nov 16 14:57:07 2011
New Revision: 1202731

URL: http://svn.apache.org/viewvc?rev=1202731&view=rev
Log:
Allow aggregates in ORDR BY clause

Modified:
    incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java

Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java?rev=1202731&r1=1202730&r2=1202731&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/algebra/AlgebraGenerator.java Wed Nov 16 14:57:07 2011
@@ -27,6 +27,7 @@ import org.openjena.atlas.logging.Log ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.query.ARQ ;
 import com.hp.hpl.jena.query.Query ;
+import com.hp.hpl.jena.query.SortCondition ;
 import com.hp.hpl.jena.sparql.ARQInternalErrorException ;
 import com.hp.hpl.jena.sparql.algebra.op.OpAssign ;
 import com.hp.hpl.jena.sparql.algebra.op.OpBGP ;
@@ -628,7 +629,19 @@ public class AlgebraGenerator 
         
         // ---- ORDER BY
         if ( query.getOrderBy() != null )
-            op = new OpOrder(op, query.getOrderBy()) ;
+        {
+            List<SortCondition> scList = new ArrayList<SortCondition>() ;
+
+            // Aggregates in ORDER BY
+            for ( SortCondition sc : query.getOrderBy() )
+            {
+                Expr e = sc.getExpression() ;
+                e = ExprLib.replaceAggregateByVariable(e) ;
+                scList.add(new SortCondition(e, sc.getDirection())) ;
+                
+            }
+            op = new OpOrder(op, scList) ;
+        }
         
         // ---- PROJECT
         // No projection => initial variables are exposed.