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