MARMOTTA-578: added missing variables to GROUP BY that required to be present 
by its usage in ORDER BY


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/ad00a286
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/ad00a286
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/ad00a286

Branch: refs/heads/maintenance-3.3.x
Commit: ad00a28696264263193e53ae6df886341750ab44
Parents: 51c4879
Author: Sergio Fernández <[email protected]>
Authored: Tue Dec 9 19:59:22 2014 +0100
Committer: Sergio Fernández <[email protected]>
Committed: Tue Dec 9 20:26:53 2014 +0100

----------------------------------------------------------------------
 .../marmotta/kiwi/sparql/builder/SQLBuilder.java | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/ad00a286/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java
index fb6d60a..0b61ae6 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java
@@ -45,7 +45,8 @@ import java.util.*;
 /**
  * A builder for translating SPARQL queries into SQL.
  *
- * @author Sebastian Schaffert ([email protected])
+ * @author Sebastian Schaffert
+ * @author Sergio Fernández
  */
 public class SQLBuilder {
 
@@ -165,7 +166,6 @@ public class SQLBuilder {
         prepareBuilder();
     }
 
-
     public Map<String, SQLVariable> getVariables() {
         return variables;
     }
@@ -610,7 +610,6 @@ public class SQLBuilder {
         }
     }
 
-
     private StringBuilder buildSelectClause() {
         List<String> projections = new ArrayList<>();
 
@@ -618,7 +617,6 @@ public class SQLBuilder {
         List<SQLVariable> vars = new ArrayList<>(variables.values());
         Collections.sort(vars, SQLVariable.sparqlNameComparator);
 
-
         for(SQLVariable v : vars) {
             if(v.getProjectionType() != ValueType.NONE && 
(projectedVars.isEmpty() || projectedVars.contains(v.getSparqlName()))) {
                 String projectedName = v.getName();
@@ -791,6 +789,7 @@ public class SQLBuilder {
 
     private StringBuilder buildGroupClause() {
         StringBuilder groupClause = new StringBuilder();
+
         if(groupLabels.size() > 0) {
             for(Iterator<String> it = groupLabels.iterator(); it.hasNext(); ) {
                 SQLVariable sv = variables.get(it.next());
@@ -809,6 +808,18 @@ public class SQLBuilder {
                     groupClause.append(", ");
                 }
             }
+
+            if (orderby.size() > 0) {
+                groupClause.append(", ");
+                for(Iterator<OrderElem> it = orderby.iterator(); it.hasNext(); 
) {
+                    OrderElem elem = it.next();
+                    groupClause.append(evaluateExpression(elem.getExpr(), 
ValueType.STRING));
+                    if (it.hasNext()) {
+                        groupClause.append(", ");
+                    }
+                }
+            }
+
             groupClause.append(" \n");
         }
 

Reply via email to