Repository: marmotta Updated Branches: refs/heads/develop 93c397fd4 -> 0fe6531bb
fix a couple of broken SPARQL tests Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/0fe6531b Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/0fe6531b Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/0fe6531b Branch: refs/heads/develop Commit: 0fe6531bb45a76bb5711fb36b62e06f0ffb5ee54 Parents: 93c397f Author: Sebastian Schaffert <[email protected]> Authored: Tue Aug 16 23:29:44 2016 +0200 Committer: Sebastian Schaffert <[email protected]> Committed: Tue Aug 16 23:29:44 2016 +0200 ---------------------------------------------------------------------- .../kiwi/sparql/builder/SQLBuilder.java | 38 ++++++++++++-------- .../kiwi/sparql/builder/model/SQLClause.java | 9 +++++ 2 files changed, 32 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/0fe6531b/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 9dc1426..3b2da50 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 @@ -222,7 +222,7 @@ public class SQLBuilder { // find all variables that have been bound already, even if they do not appear in a pattern for(Var v : new VariableFinder(query).variables) { - if(v.hasValue() && !v.getName().startsWith("-const")) { + if (v.hasValue() && !isConst(v)) { SQLVariable sv = variables.get(v.getName()); if(sv == null) { sv = new SQLVariable("V" + (++variableCount), v.getName()); @@ -243,12 +243,12 @@ public class SQLBuilder { // field names in the database query; each variable will have one or several field names, // one for each pattern it occurs in; field names are constructed automatically by a counter // and the pattern name to ensure the name is a valid HQL identifier - for(SQLFragment f : fragments) { + for (SQLFragment f : fragments) { for (SQLPattern p : f.getPatterns()) { // build pattern Var[] fields = p.getFields(); for (int i = 0; i < fields.length; i++) { - if (fields[i] != null && (!fields[i].hasValue() || !fields[i].getName().startsWith("-const"))) { + if (fields[i] != null && (!fields[i].hasValue() || !isConst(fields[i]))) { Var v = fields[i]; SQLVariable sv = variables.get(v.getName()); @@ -356,7 +356,7 @@ public class SQLBuilder { // build pattern Var[] fields = p.getFields(); for (int i = 0; i < fields.length; i++) { - if (fields[i] != null && (!fields[i].hasValue() || !fields[i].getName().startsWith("-const"))) { + if (fields[i] != null && (!fields[i].hasValue() || !isConst(fields[i]))) { Var v = fields[i]; SQLVariable sv = variables.get(v.getName()); @@ -364,32 +364,32 @@ public class SQLBuilder { String pName = p.getName(); // if the variable has been used before, add a join condition to the first occurrence - if(sv.getExpressions().size() > 0) { + if (!sv.getExpressions().isEmpty()) { // case distinction: is this variable projected as node or as another value in an extension? // if it is a value, we need to refer to the corresponding typed column of the node, otherwise // to the node ID (field ID is sufficient) switch (sv.getProjectionType()) { case INT: - p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".ivalue"); + p.addCondition(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".ivalue"); break; case DECIMAL: case DOUBLE: - p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".dvalue"); + p.addCondition(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".dvalue"); break; case DATE: case TZDATE: - p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".tvalue"); + p.addCondition(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".tvalue"); break; case BOOL: - p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".bvalue"); + p.addCondition(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".bvalue"); break; case URI: case STRING: - p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".svalue"); + p.addCondition(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".svalue"); break; default: - p.getConditions().add(sv.getExpressions().get(0) + " = " + pName + "." + positions[i]); + p.addCondition(sv.getExpressions().get(0) + " = " + pName + "." + positions[i]); break; } } @@ -408,7 +408,7 @@ public class SQLBuilder { // if the variable has been used before, add a join condition to the first occurrence if(sv.getExpressions().size() > 0) { - sq.getConditions().add(sv.getExpressions().get(0) + " = " + sqName + "." + sq_v.getName()); + sq.addCondition(sv.getExpressions().get(0) + " = " + sqName + "." + sq_v.getName()); } sv.getExpressions().add(sqName + "." + sq_v.getName()); @@ -504,7 +504,7 @@ public class SQLBuilder { // iterate over all fragments and add translate the filter conditions into SQL for(SQLFragment f : fragments) { for(ValueExpr e : f.getFilters()) { - f.getConditions().add(evaluateExpression(e, ValueType.NODE)); + f.addCondition(evaluateExpression(e, ValueType.NODE)); } } @@ -530,7 +530,7 @@ public class SQLBuilder { if (nodeId >= 0) { String condition = pName + "." + positions[i] + " = " + nodeId; - p.getConditions().add(condition); + p.addCondition(condition); } } } @@ -565,7 +565,7 @@ public class SQLBuilder { } cCond.append(")"); - p.getConditions().add(cCond.toString()); + p.addCondition(cCond.toString()); } } } @@ -979,4 +979,12 @@ public class SQLBuilder { return queryString; } + /** + * Return true if a variable is a Sesame constant. + * @param v + * @return + */ + private static boolean isConst(Var v) { + return v.getName().startsWith("-const") || v.getName().startsWith("_const"); + } } http://git-wip-us.apache.org/repos/asf/marmotta/blob/0fe6531b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLClause.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLClause.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLClause.java index b8bc4db..75b2a60 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLClause.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLClause.java @@ -54,6 +54,15 @@ public abstract class SQLClause { return false; } + + /** + * Add a SQL condition to the list of conditions. + * @param condition + */ + public void addCondition(String condition) { + conditions.add(condition); + } + /** * Build the condition clause for this statement to be used in the WHERE part or the ON part of a JOIN. * @return
