Repository: marmotta
Updated Branches:
  refs/heads/develop 11cb38902 -> 90620e29a


SPARQL:
- fix extension use in statement patterns


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

Branch: refs/heads/develop
Commit: 90620e29ad6fe016515b4b00fb2867196844ed88
Parents: 11cb389
Author: Sebastian Schaffert <[email protected]>
Authored: Sun Nov 9 18:10:54 2014 +0100
Committer: Sebastian Schaffert <[email protected]>
Committed: Sun Nov 9 18:10:54 2014 +0100

----------------------------------------------------------------------
 .../kiwi/sparql/builder/SQLBuilder.java         | 26 +++++++++++++++++++-
 .../sparql/builder/collect/ConditionFinder.java | 12 ++++-----
 2 files changed, 30 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/90620e29/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 bf79193..ac24190 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
@@ -342,6 +342,9 @@ public class SQLBuilder {
 
             try {
                 sv.getExpressions().add(evaluateExpression(ext.getExpr(), 
ValueType.NODE));
+                if(sv.getProjectionType() == ValueType.NODE && 
getProjectionType(ext.getExpr()) != ValueType.NODE) {
+                    sv.setProjectionType(getProjectionType(ext.getExpr()));
+                }
             } catch(IllegalStateException ex) {
                 deferredExtensions.add(ext);
             }
@@ -364,7 +367,28 @@ public class SQLBuilder {
 
                         // if the variable has been used before, add a join 
condition to the first occurrence
                         if(sv.getExpressions().size() > 0) {
-                            p.getConditions().add(sv.getExpressions().get(0) + 
" = " + pName + "." + positions[i]);
+                            switch (sv.getProjectionType()) {
+                                case INT:
+                                    
p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + 
".ivalue");
+                                    break;
+                                case DOUBLE:
+                                    
p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + 
".dvalue");
+                                    break;
+                                case DATE:
+                                    
p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + 
".tvalue");
+                                    break;
+                                case BOOL:
+                                    
p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + 
".bvalue");
+                                    break;
+                                case URI:
+                                case STRING:
+                                    
p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + 
".svalue");
+                                    break;
+
+                                default:
+                                    
p.getConditions().add(sv.getExpressions().get(0) + " = " + pName + "." + 
positions[i]);
+                                    break;
+                            }
                         }
 
                         sv.getExpressions().add(pName + "." + positions[i]);

http://git-wip-us.apache.org/repos/asf/marmotta/blob/90620e29/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
index 81519ca..64fd830 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
@@ -253,13 +253,11 @@ public class ConditionFinder extends 
QueryModelVisitorBase<RuntimeException> {
 
     @Override
     public void meet(ExtensionElem node) throws RuntimeException {
-        if(neededVariables.contains(node.getName())) {
-            valueNeeded++;
-            super.meet(node);
-            valueNeeded--;
-        } else {
-            super.meet(node);
-        }
+        neededVariables.add(node.getName());
+
+        valueNeeded++;
+        super.meet(node);
+        valueNeeded--;
     }
 
 }

Reply via email to