public SolutionComparator(IKeyOrder<E> keyOrder) { this.comparator = keyOrder.getComparator(); }
public Bundle(final IKeyBuilder keyBuilder, final IPredicate<F> asBound, final IKeyOrder<F> keyOrder, final IBindingSet bindingSet) { this.bindingSet = bindingSet; this.asBound = asBound; this.keyOrder = keyOrder; this.fromKey = keyOrder.getFromKey(keyBuilder, asBound); this.toKey = keyOrder.getToKey(keyBuilder, asBound); }
/** * Orders {@link Bundle}s first by their {@link IKeyOrder} and then imposes * an <code>unsigned byte[]</code> order on the {@link #fromKey}. This * groups {@link Bundle}s for the same scale-out index together which allows * us to make more efficient requests against the MDS and makes it more * likely that we can reuse the last {@link PartitionLocator} for the next * as-bound predicate. * * @see <a href="https://sourceforge.net/apps/trac/bigdata/ticket/457"> * "No such index" on cluster under concurrent query workload </a> */ public int compareTo(final Bundle<F> o) { int ret = keyOrder.getIndexName().compareTo(o.keyOrder.getIndexName()); if (ret == 0) { ret = BytesUtil.compareBytes(this.fromKey, o.fromKey); } return ret; }
final public int getVariableCount(final IKeyOrder<E> keyOrder) { int nunbound = 0; final int keyArity = keyOrder.getKeyArity(); for (int keyPos = 0; keyPos < keyArity; keyPos++) { final int index = keyOrder.getKeyOrder(keyPos); final IVariableOrConstant<?> t = get(index); if (t == null || t.isVar()) { nunbound++; } } return nunbound; }
+ "." + keyOrder.getIndexName(), partitionId); .getTupleSerializer().getKeyBuilder(); fromKey = keyOrder.getFromKey(keyBuilder, predicate); toKey = keyOrder.getToKey(keyBuilder, predicate);
final byte[] key = keyOrder.getKey(keyBuilder, e);
new DistinctTermAdvancer(keyOrder.getKeyArity()) : new DistinctMultiTermAdvancer(keyOrder.getKeyArity(), nrConsts);
+ "." + keyOrder.getIndexName(), partitionId); .getTupleSerializer().getKeyBuilder(); fromKey = keyOrder.getFromKey(keyBuilder, predicate); toKey = keyOrder.getToKey(keyBuilder, predicate);
final public int getVariableCount(final IKeyOrder<E> keyOrder) { int nunbound = 0; final int keyArity = keyOrder.getKeyArity(); for (int keyPos = 0; keyPos < keyArity; keyPos++) { final int index = keyOrder.getKeyOrder(keyPos); final IVariableOrConstant<?> t = get(index); if (t == null || t.isVar()) { nunbound++; } } return nunbound; }
final byte[] key = keyOrder.getKey(keyBuilder, e);
new DistinctTermAdvancer(keyOrder.getKeyArity()) : new DistinctMultiTermAdvancer(keyOrder.getKeyArity(), nrConsts);
public SolutionComparator(IKeyOrder<E> keyOrder) { this.comparator = keyOrder.getComparator(); }
public Bundle(final IKeyBuilder keyBuilder, final IPredicate<F> asBound, final IKeyOrder<F> keyOrder, final IBindingSet bindingSet) { this.bindingSet = bindingSet; this.asBound = asBound; this.keyOrder = keyOrder; this.fromKey = keyOrder.getFromKey(keyBuilder, asBound); this.toKey = keyOrder.getToKey(keyBuilder, asBound); }
/** * Orders {@link Bundle}s first by their {@link IKeyOrder} and then imposes * an <code>unsigned byte[]</code> order on the {@link #fromKey}. This * groups {@link Bundle}s for the same scale-out index together which allows * us to make more efficient requests against the MDS and makes it more * likely that we can reuse the last {@link PartitionLocator} for the next * as-bound predicate. * * @see <a href="https://sourceforge.net/apps/trac/bigdata/ticket/457"> * "No such index" on cluster under concurrent query workload </a> */ public int compareTo(final Bundle<F> o) { int ret = keyOrder.getIndexName().compareTo(o.keyOrder.getIndexName()); if (ret == 0) { ret = BytesUtil.compareBytes(this.fromKey, o.fromKey); } return ret; }
@Override public ISPO[] nextChunk(final IKeyOrder<ISPO> keyOrder) { if (keyOrder == null) throw new IllegalArgumentException(); final ISPO[] stmts = nextChunk(); if (chunkKeyOrder != keyOrder) { // sort into the required order. Arrays.sort(stmts, 0, stmts.length, keyOrder.getComparator()); } return stmts; }
/** * The fully qualified name of the index. * * @param relation * The relation. * @param keyOrder * The natural index order. * * @return The fully qualified index name. */ static public <E> String getFQN(final IRelation<E> relation, final IKeyOrder<? extends E> keyOrder) { return getFQN(relation, keyOrder.getIndexName()); }
@Override public F[] nextChunk(final IKeyOrder<F> keyOrder) { if (keyOrder == null) throw new IllegalArgumentException(); final F[] chunk = nextChunk(); if (!keyOrder.equals(this.keyOrder)) { Arrays.sort(chunk, keyOrder.getComparator()); } return chunk; }
/** * The fully qualified name of the index. * * @param relation * The relation. * @param keyOrder * The natural index order. * * @return The fully qualified index name. */ static public <E> String getFQN(final IRelation<E> relation, final IKeyOrder<? extends E> keyOrder) { return getFQN(relation, keyOrder.getIndexName()); }
public ISPO[] nextChunk(final IKeyOrder<ISPO> keyOrder) { if (keyOrder == null) throw new IllegalArgumentException(); final ISPO[] stmts = nextChunk(); if (keyOrder != this.keyOrder) { // sort into the required order. Arrays.sort(stmts, 0, stmts.length, keyOrder.getComparator()); } return stmts; }
@Override public ISPO[] nextChunk(final IKeyOrder<ISPO> keyOrder) { if (keyOrder == null) throw new IllegalArgumentException(); final ISPO[] stmts = nextChunk(); if (chunkKeyOrder != keyOrder) { // sort into the required order. Arrays.sort(stmts, 0, stmts.length, keyOrder.getComparator()); } return stmts; }