package com.bigdata.bop.fed.shards; import com.bigdata.bop.IBindingSet; import com.bigdata.bop.IPredicate; import com.bigdata.relation.accesspath.IBuffer; /** * FIXME Implement {@link Algorithm_AsGivenPredicate}. * <p> * This algorithm should be applied if the asBound predicate is known to be * either fully unbound (no variables are bound). In this case we know that we * will map each source binding set across all shards. All the implementation * needs to do is copy the references for the source binding sets onto an * {@link IBuffer} for each shard in that scale-out index. * <p> * A refinement of this would handle the case where the source binding sets will * not bind any variables for the target predicate. Here, instead of mapping * each source binding set across all shards we map each source binding set * across all shards having the constant prefix associated with the "as given" * {@link IPredicate} (since no variables from the source binding sets become * bound on the target predicate, all binding sets will be sent to all shards * spanned by that target predicate). * <p> * This could be hugely more efficient when we being with a predicate which is * relatively unselective. */ class Algorithm_AsGivenPredicate<E extends IBindingSet, F> implements IShardMapper<E, F> { public void mapOverShards(Bundle<F>[] bundles) { // TODO Auto-generated method stub throw new UnsupportedOperationException(); } }