From: <tho...@us...> - 2011-01-10 22:09:12
|
Revision: 4071 http://bigdata.svn.sourceforge.net/bigdata/?rev=4071&view=rev Author: thompsonbry Date: 2011-01-10 22:09:06 +0000 (Mon, 10 Jan 2011) Log Message: ----------- Added 'optional' annotation to OptionalJoinGroup. This operator should perhaps be renamed 'SubqueryOp'. Modified Paths: -------------- branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/bop/controller/OptionalJoinGroup.java Modified: branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/bop/controller/OptionalJoinGroup.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/bop/controller/OptionalJoinGroup.java 2011-01-09 21:21:38 UTC (rev 4070) +++ branches/QUADS_QUERY_BRANCH/bigdata/src/java/com/bigdata/bop/controller/OptionalJoinGroup.java 2011-01-10 22:09:06 UTC (rev 4071) @@ -78,6 +78,15 @@ String SUBQUERY = OptionalJoinGroup.class.getName() + ".subquery"; /** + * When <code>true</code> the subquery has optional semantics (if the + * subquery fails, the original binding set will be passed along to the + * downstream sink anyway). + */ + String OPTIONAL = OptionalJoinGroup.class.getName() + ".optional"; + + boolean DEFAULT_OPTIONAL = true; + + /** * The maximum parallelism with which the subqueries will be evaluated * (default {@value #DEFAULT_MAX_PARALLEL}). */ @@ -163,6 +172,7 @@ private final BOpContext<IBindingSet> context; // private final List<FutureTask<IRunningQuery>> tasks = new LinkedList<FutureTask<IRunningQuery>>(); // private final CountDownLatch latch; + private final boolean optional; private final int nparallel; private final PipelineOp subquery; private final Executor executor; @@ -179,6 +189,9 @@ this.context = context; + this.optional = controllerOp.getProperty(Annotations.OPTIONAL, + Annotations.DEFAULT_OPTIONAL); + this.nparallel = controllerOp.getProperty(Annotations.MAX_PARALLEL, Annotations.DEFAULT_MAX_PARALLEL); @@ -385,7 +398,7 @@ // wait for the subquery. runningQuery.get(); - if (ncopied == 0L) { + if (ncopied == 0L && optional) { /* * Since there were no solutions for the subquery, copy This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |