You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/06/11 13:00:50 UTC
[5/5] jena git commit: JENA-1193: Do not attempt to project vars when
not at the top-level.
JENA-1193: Do not attempt to project vars when not at the top-level.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0f2a544a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0f2a544a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0f2a544a
Branch: refs/heads/master
Commit: 0f2a544a6655b948c4a171a303442c767c2754a7
Parents: 5baef47
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Jun 11 13:58:54 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Jun 11 13:58:54 2016 +0100
----------------------------------------------------------------------
.../jena/sdb/compiler/QueryIterOpSQL.java | 43 ++++++++++++++------
.../apache/jena/sdb/compiler/SDBCompile.java | 3 +-
.../org/apache/jena/sdb/core/SDBRequest.java | 13 +++++-
3 files changed, 44 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/0f2a544a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QueryIterOpSQL.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QueryIterOpSQL.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QueryIterOpSQL.java
index 958db93..e54b1ef 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QueryIterOpSQL.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QueryIterOpSQL.java
@@ -19,7 +19,9 @@
package org.apache.jena.sdb.compiler;
import org.apache.jena.atlas.io.IndentedWriter;
+import org.apache.jena.sdb.core.SDBRequest ;
import org.apache.jena.sdb.shared.SDBInternalError ;
+import org.apache.jena.shared.PrefixMapping ;
import org.apache.jena.sparql.algebra.Op ;
import org.apache.jena.sparql.core.Substitute ;
import org.apache.jena.sparql.engine.ExecutionContext ;
@@ -30,7 +32,11 @@ import org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply ;
public class QueryIterOpSQL extends QueryIterRepeatApply
{
- private OpSQL opSQL ;
+ private final OpSQL opSQL ;
+ // Modifed to remove the query - after substitution, the query is no longer useful
+ // information. This also stops the bridge attempting to project variables -
+ // by this stage, we want all variables back.
+ private final SDBRequest request ;
public QueryIterOpSQL(OpSQL op,
QueryIterator input ,
@@ -38,16 +44,24 @@ public class QueryIterOpSQL extends QueryIterRepeatApply
{
super(input, context) ;
this.opSQL = op ;
+ SDBRequest req = op.getRequest() ;
+ if ( req == null )
+ this.request = null ;
+ else {
+ PrefixMapping pmap = req.getQuery() == null ? null : req.getQuery().getPrefixMapping() ;
+ this.request =
+ op.getRequest() == null
+ ? null
+ : new SDBRequest(op.getRequest().getStore(), pmap, context.getContext()) ;
+ }
}
@Override
- protected QueryIterator nextStage(Binding binding)
- {
+ protected QueryIterator nextStage(Binding binding) {
OpSQL execSQL = this.opSQL ;
- if ( binding != null && ! isRoot(binding) )
- {
- QueryCompiler qc = opSQL.getRequest().getStore().getQueryCompilerFactory().createQueryCompiler(opSQL.getRequest()) ;
+ if ( binding != null && ! isRoot(binding) ) {
+ QueryCompiler qc = opSQL.getRequest().getStore().getQueryCompilerFactory().createQueryCompiler(request) ;
Op op2 = Substitute.substitute(opSQL.getOriginal(), binding) ;
Op op = qc.compile(op2) ;
if ( op instanceof OpSQL )
@@ -57,16 +71,21 @@ public class QueryIterOpSQL extends QueryIterRepeatApply
}
return execSQL.exec(binding, getExecContext()) ;
+// QueryIterator qIter = execSQL.exec(binding, getExecContext()) ;
+// List<Binding> x = Iter.toList(qIter) ;
+// qIter = new QueryIterPlainWrapper(x.iterator(), getExecContext()) ;
+// System.out.println("SQL Eval:") ;
+// x.forEach(b -> System.out.println(" "+b) );
+// System.out.println() ;
+// return qIter ;
}
-
- private static boolean isRoot(Binding binding)
- {
- return ! binding.vars().hasNext() ;
+
+ private static boolean isRoot(Binding binding) {
+ return !binding.vars().hasNext() ;
}
@Override
- public void output(IndentedWriter out)
- {
+ public void output(IndentedWriter out) {
opSQL.output(out) ;
}
}
http://git-wip-us.apache.org/repos/asf/jena/blob/0f2a544a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDBCompile.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDBCompile.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDBCompile.java
index a437730..d9a4515 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDBCompile.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDBCompile.java
@@ -24,6 +24,7 @@ import org.apache.jena.sdb.SDB ;
import org.apache.jena.sdb.Store ;
import org.apache.jena.sdb.core.SDBRequest ;
import org.apache.jena.sdb.util.StoreUtils ;
+import org.apache.jena.shared.PrefixMapping ;
import org.apache.jena.sparql.algebra.Op ;
import org.apache.jena.sparql.core.Substitute ;
import org.apache.jena.sparql.engine.binding.Binding ;
@@ -42,7 +43,7 @@ public class SDBCompile
if ( context == null )
context = SDB.getContext() ;
- SDBRequest request = new SDBRequest(store, null, context) ;
+ SDBRequest request = new SDBRequest(store, (PrefixMapping)null, context) ;
return compile(store, op, null, context, request) ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/0f2a544a/jena-sdb/src/main/java/org/apache/jena/sdb/core/SDBRequest.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/SDBRequest.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/SDBRequest.java
index c37c49c..434fbae 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/SDBRequest.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/SDBRequest.java
@@ -38,7 +38,7 @@ import org.apache.jena.sparql.util.Context ;
public class SDBRequest extends StoreHolder
{
private PrefixMapping prefixMapping ;
- private Query query ;
+ private final Query query ;
// Per request unique variables.
private VarAlloc varAlloc = new VarAlloc(AliasesSparql.VarBase) ;
@@ -46,7 +46,7 @@ public class SDBRequest extends StoreHolder
// Set in SDBCompile.compile
public boolean LeftJoinTranslation = true ; // Does the DB support general join expressions?
public boolean LimitOffsetTranslation = false ; // Does the DB grok the Limit/Offset SQL?
- public boolean DistinctTranslation = true ; // Some DBs can't do DISTINCt on CLOBS.
+ public boolean DistinctTranslation = true ; // Some DBs can't do DISTINCT on CLOBS.
private Context context ;
@@ -63,6 +63,15 @@ public class SDBRequest extends StoreHolder
this.context = new Context(context) ;
}
+ public SDBRequest(Store store, PrefixMapping prefixMapping, Context context) {
+ super(store) ;
+ this.query = null ;
+ this.prefixMapping = prefixMapping ;
+ if ( context == null )
+ context = SDB.getContext() ;
+ this.context = new Context(context) ;
+ }
+
public SDBRequest(Store store, Query query)
{
this(store, query, null) ;