You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2014/10/08 15:24:24 UTC
git commit: code improvements for query construction
Repository: marmotta
Updated Branches:
refs/heads/develop d7935fcea -> 22a52b32d
code improvements for query construction
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/22a52b32
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/22a52b32
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/22a52b32
Branch: refs/heads/develop
Commit: 22a52b32d476176c83f503e99ae76bec69078a90
Parents: d7935fc
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Wed Oct 8 15:24:50 2014 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Wed Oct 8 15:24:50 2014 +0200
----------------------------------------------------------------------
.../kiwi/sparql/builder/SQLBuilder.java | 44 ++++++++++----------
.../kiwi/sparql/builder/SQLSubQuery.java | 6 ++-
.../persistence/KiWiSparqlConnection.java | 2 +-
.../kiwi/sparql/test/KiWiSparqlJoinTest.java | 38 -----------------
4 files changed, 26 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/22a52b32/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 cba14a9..bf55800 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
@@ -462,9 +462,7 @@ public class SQLBuilder {
if (v instanceof KiWiNode) {
long nodeId = ((KiWiNode) v).getId();
- cCond.append(varName);
- cCond.append(".context = ");
- cCond.append(nodeId);
+ cCond.append(varName).append(".context = ").append(nodeId);
if (it.hasNext()) {
cCond.append(" OR ");
@@ -513,7 +511,7 @@ public class SQLBuilder {
}
- private String buildSelectClause() {
+ private StringBuilder buildSelectClause() {
List<String> projections = new ArrayList<>();
// enforce order in SELECT part, we need this for merging UNION subqueries
@@ -547,11 +545,11 @@ public class SQLBuilder {
selectClause.append(CollectionUtils.fold(projections,", "));
- return selectClause.toString();
+ return selectClause;
}
- private String buildFromClause() {
+ private StringBuilder buildFromClause() {
// build the from-clause of the query; the from clause is constructed as follows:
// 1. for each pattern P, there will be a "KiWiTriple P" in the from clause
// 2. for each variable V in P occurring in
@@ -568,11 +566,11 @@ public class SQLBuilder {
}
}
- return fromClause.toString();
+ return fromClause;
}
- private String buildWhereClause() {
+ private StringBuilder buildWhereClause() {
// build the where clause as follows:
// 1. iterate over all patterns and for each resource and literal field in subject,
// property, object, or context, and set a query condition according to the
@@ -623,10 +621,10 @@ public class SQLBuilder {
}
}
}
- return whereClause.toString();
+ return whereClause;
}
- private String buildOrderClause() {
+ private StringBuilder buildOrderClause() {
StringBuilder orderClause = new StringBuilder();
if(orderby.size() > 0) {
for(Iterator<OrderElem> it = orderby.iterator(); it.hasNext(); ) {
@@ -644,10 +642,10 @@ public class SQLBuilder {
orderClause.append(" \n");
}
- return orderClause.toString();
+ return orderClause;
}
- private String buildGroupClause() {
+ private StringBuilder buildGroupClause() {
StringBuilder groupClause = new StringBuilder();
if(groupLabels.size() > 0) {
for(Iterator<String> it = groupLabels.iterator(); it.hasNext(); ) {
@@ -670,11 +668,11 @@ public class SQLBuilder {
groupClause.append(" \n");
}
- return groupClause.toString();
+ return groupClause;
}
- private String buildLimitClause() {
+ private StringBuilder buildLimitClause() {
// construct limit and offset
StringBuilder limitClause = new StringBuilder();
if(limit > 0) {
@@ -687,7 +685,7 @@ public class SQLBuilder {
limitClause.append(offset);
limitClause.append(" ");
}
- return limitClause.toString();
+ return limitClause;
}
@@ -1163,13 +1161,13 @@ public class SQLBuilder {
*
* @return
*/
- public String build() {
- String selectClause = buildSelectClause();
- String fromClause = buildFromClause();
- String whereClause = buildWhereClause();
- String orderClause = buildOrderClause();
- String groupClause = buildGroupClause();
- String limitClause = buildLimitClause();
+ public StringBuilder build() {
+ StringBuilder selectClause = buildSelectClause();
+ StringBuilder fromClause = buildFromClause();
+ StringBuilder whereClause = buildWhereClause();
+ StringBuilder orderClause = buildOrderClause();
+ StringBuilder groupClause = buildGroupClause();
+ StringBuilder limitClause = buildLimitClause();
StringBuilder queryString = new StringBuilder();
@@ -1197,7 +1195,7 @@ public class SQLBuilder {
log.debug("SPARQL -> SQL node variable mappings:\n {}", variables);
log.debug("projected variables:\n {}", projectedVars);
- return queryString.toString();
+ return queryString;
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/22a52b32/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java
index af8444c..d2bb74a 100644
--- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java
+++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLSubQuery.java
@@ -86,9 +86,11 @@ public class SQLSubQuery extends SQLAbstractSubquery {
for(VariableMapping var : getJoinFields()) {
fromClause.append(" LEFT JOIN nodes AS "); // outer join because binding might be NULL
- fromClause.append(alias + "_" + var.getParentName());
+ fromClause.append(alias).append("_").append(var.getParentName());
- fromClause.append(" ON " + alias + "." + var.getSubqueryName() + " = " + alias + "_" + var.getParentName() + ".id ");
+ fromClause
+ .append(" ON ").append(alias).append(".").append(var.getSubqueryName())
+ .append(" = ").append(alias).append("_").append(var.getParentName()).append(".id ");
}
return fromClause.toString();
http://git-wip-us.apache.org/repos/asf/marmotta/blob/22a52b32/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 d242b3e..1f86982 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
@@ -88,7 +88,7 @@ public class KiWiSparqlConnection {
try {
final SQLBuilder builder = new SQLBuilder(join, bindings, dataset, valueFactory, parent.getDialect(), projectedVars);
- final PreparedStatement queryStatement = parent.getJDBCConnection().prepareStatement(builder.build());
+ final PreparedStatement queryStatement = parent.getJDBCConnection().prepareStatement(builder.build().toString());
if (parent.getDialect().isCursorSupported()) {
queryStatement.setFetchSize(parent.getConfiguration().getCursorSize());
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/22a52b32/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
index 2d7d7b4..b3b2e2e 100644
--- a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
+++ b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
@@ -351,44 +351,6 @@ public class KiWiSparqlJoinTest {
testUpdate("update01.sparql", FOAF.name);
}
- @Ignore("test for MARMOTTA-548/SES-2109")
- @Test
- public void testIRI() throws Exception {
- String queryString = "SELECT * WHERE <http://it.dbpedia.org/resource/Acigné> ?p ?o } LIMIT 1";
-
- RepositoryConnection con1 = repository.getConnection();
- RepositoryConnection con2 = reference.getConnection();
- try {
- con2.begin();
-
- TupleQuery query2 = con2.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
- TupleQueryResult result2 = query2.evaluate();
-
- con2.commit();
-
- Assume.assumeTrue(result2.hasNext());
-
- con1.begin();
-
- TupleQuery query1 = con1.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
- TupleQueryResult result1 = query1.evaluate();
-
- con1.commit();
-
- Assert.assertTrue(result1.hasNext());
-
-
- compareResults(result1, result2);
-
- } catch(RepositoryException ex) {
- con1.rollback();
- } finally {
- con1.close();
- con2.close();
- }
- }
-
-
// fulltext search filter
@Test