Repository: marmotta
Updated Branches:
  refs/heads/develop 6ee8853d3 -> 7600c31c2


fix return types for aggregation functions


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

Branch: refs/heads/develop
Commit: 7600c31c2826e7f536f0d667ff30b60757627d0b
Parents: 6ee8853
Author: Sebastian Schaffert <[email protected]>
Authored: Thu Oct 9 16:53:36 2014 +0200
Committer: Sebastian Schaffert <[email protected]>
Committed: Thu Oct 9 16:53:36 2014 +0200

----------------------------------------------------------------------
 .../kiwi/sparql/builder/SQLBuilder.java         |  8 +++++-
 .../persistence/KiWiSparqlConnection.java       | 26 ++++++++++++++------
 2 files changed, 25 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/7600c31c/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 11b3f72..29ecf97 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
@@ -1127,9 +1127,15 @@ public class SQLBuilder {
         } else if(expr instanceof Var) {
             return ProjectionType.NODE;
         } else if(expr instanceof MathExpr) {
-            MathExpr cmp = (MathExpr)expr;
+            MathExpr cmp = (MathExpr) expr;
 
             return opTypeToProjection(new OPTypeFinder(cmp).coerce());
+        } else if(expr instanceof Count) {
+            return ProjectionType.INT;
+        } else if(expr instanceof Sum) {
+            return ProjectionType.DOUBLE;
+        } else if(expr instanceof Avg) {
+            return ProjectionType.DOUBLE;
         } else {
             return ProjectionType.STRING;
         }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/7600c31c/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java
index 1f86982..0c85daa 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java
@@ -137,26 +137,36 @@ public class KiWiSparqlConnection {
                                 resultRow.addBinding(sv.getSparqlName(), 
nodes[i]);
                             } else if(sv.getProjectionType() != 
ProjectionType.NONE && (builder.getProjectedVars().isEmpty() || 
builder.getProjectedVars().contains(sv.getSparqlName()))) {
                                 // literal value
-                                String value = row.getString(sv.getName());
-                                if(value != null) {
+                                String svalue;
                                     switch (sv.getProjectionType()) {
                                         case URI:
-                                            
resultRow.addBinding(sv.getSparqlName(), new URIImpl(value));
+                                            svalue = 
row.getString(sv.getName());
+                                            if(svalue != null)
+                                                
resultRow.addBinding(sv.getSparqlName(), new URIImpl(svalue));
                                             break;
                                         case INT:
-                                            
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value, XSD.Integer));
+                                            if(row.getObject(sv.getName()) != 
null) {
+                                                svalue = 
Integer.toString(row.getInt(sv.getName()));
+                                                
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue, XSD.Integer));
+                                            }
                                             break;
                                         case DOUBLE:
-                                            
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value, XSD.Double));
+                                            if(row.getObject(sv.getName()) != 
null) {
+                                                svalue = 
Double.toString(row.getDouble(sv.getName()));
+                                                
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue, XSD.Double));
+                                            }
                                             break;
                                         case STRING:
-                                            
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value));
+                                            svalue = 
row.getString(sv.getName());
+                                            if(svalue != null)
+                                                
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue));
                                             break;
                                         default:
-                                            
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value));
+                                            svalue = 
row.getString(sv.getName());
+                                            if(svalue != null)
+                                                
resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue));
                                             break;
                                     }
-                                }
                             }
                         }
 

Reply via email to