public MultiKeySliceQuery getQuery(final CompositeIndexType index, List<Object[]> values) { final List<KeySliceQuery> ksqs = new ArrayList<>(values.size()); for (final Object[] value : values) { ksqs.add(new KeySliceQuery(getIndexKey(index,value), BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(1))); } return new MultiKeySliceQuery(ksqs); }
public static boolean containsKey(KeyColumnValueStore store, StaticBuffer key, int maxColumnLength, StoreTransaction txh) throws BackendException { final StaticBuffer end; if (maxColumnLength>32) { end = BufferUtil.oneBuffer(maxColumnLength); } else { end = END; } return !store.getSlice(new KeySliceQuery(key, START, end).setLimit(1),txh).isEmpty(); }
public static KeyIterator getKeys(KeyColumnValueStore store, SliceQuery slice, StoreFeatures features, int keyLength, StoreTransaction txh) throws BackendException { if (features.hasUnorderedScan()) { return store.getKeys(slice, txh); } else if (features.hasOrderedScan()) { return store.getKeys(new KeyRangeQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(keyLength), slice), txh); } else throw new UnsupportedOperationException("Provided stores does not support scan operations: " + store); }
public static KeyIterator getKeys(KeyColumnValueStore store, StoreFeatures features, int keyLength, int sliceLength, StoreTransaction txh) throws BackendException { return getKeys(store,new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(sliceLength)).setLimit(1), features,keyLength,txh); }
"Expected start of first query to be a single 0s: %s",start); StaticBuffer end = ground.getSliceEnd(); Preconditions.checkArgument(end.equals(BufferUtil.oneBuffer(end.length())), "Expected end of first query to be all 1s: %s",end);
public void testDataSequential() throws Exception { loadData(200000,2); close(); KeyColumnValueStoreManager manager = openStorageManager(); KeyColumnValueStore store = manager.openDatabase(Backend.EDGESTORE_NAME); SliceQuery query = new SliceQuery(BufferUtil.zeroBuffer(8),BufferUtil.oneBuffer(8)); query.setLimit(2); Stopwatch watch = Stopwatch.createStarted(); StoreTransaction txh = manager.beginTransaction(StandardBaseTransactionConfig.of(TimestampProviders.MILLI)); KeyIterator iterator = store.getKeys(query,txh); int numV = 0; while(iterator.hasNext()) { iterator.next(); RecordIterator<Entry> entries = iterator.getEntries(); assertEquals(2, Iterators.size(entries)); numV++; } iterator.close(); txh.commit(); System.out.println("Time taken: " + watch.elapsed(TimeUnit.MILLISECONDS)); System.out.println("Num Vertices: " + numV); store.close(); manager.close(); }
ImmutableList.of(new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)))); ScanMetrics result1 = runner.run(new SimpleScanJob(), conf1, SimpleScanJob.class.getName() + "#ROOT_NS"); assertEquals(keys,result1.getCustom(SimpleScanJob.KEY_COUNT)); Configuration conf2 = getJobConf(ImmutableList.of(new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(5))); ScanMetrics result2 = runner.run(new SimpleScanJob(), conf2, SimpleScanJob.class.getName() + "#ROOT_NS"); assertEquals(keys,result2.getCustom(SimpleScanJob.KEY_COUNT)); new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(1), new SliceQuery(KeyValueStoreUtil.getBuffer(0), KeyValueStoreUtil.getBuffer(5)))); ScanMetrics result4 = runner.run(new SimpleScanJob(), conf4, SimpleScanJob.class.getName() + "#ROOT_NS"); new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(1), new SliceQuery(KeyValueStoreUtil.getBuffer(2), KeyValueStoreUtil.getBuffer(4)), new SliceQuery(KeyValueStoreUtil.getBuffer(6), KeyValueStoreUtil.getBuffer(8)), ImmutableList.of(new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(5)), 2L); ScanMetrics result6 = runner.run(new SimpleScanJob(), conf6, SimpleScanJob.class.getName() + "#ROOT_NS"); assertEquals(keys/2,result6.getCustom(SimpleScanJob.KEY_COUNT)); new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(1), new SliceQuery(KeyValueStoreUtil.getBuffer(2), KeyValueStoreUtil.getBuffer(4)), new SliceQuery(KeyValueStoreUtil.getBuffer(31), KeyValueStoreUtil.getBuffer(35)), new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(1), new SliceQuery(KeyValueStoreUtil.getBuffer(31), KeyValueStoreUtil.getBuffer(35))), 2L, 1L); ScanMetrics result8 = runner.run(new SimpleScanJob(), conf8, SimpleScanJob.class.getName() + "#ROOT_NS"); new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128)).setLimit(1),
@Override public List<SliceQuery> getQueries() { if (isGlobalGraphIndex()) { //Everything return ImmutableList.of(new SliceQuery(BufferUtil.zeroBuffer(1), BufferUtil.oneBuffer(128))); } else { RelationTypeIndexWrapper wrapper = (RelationTypeIndexWrapper)index; InternalRelationType wrappedType = wrapper.getWrappedType(); Direction direction=null; for (Direction dir : Direction.values()) if (wrappedType.isUnidirected(dir)) direction=dir; assert direction!=null; StandardJanusGraphTx tx = (StandardJanusGraphTx)graph.get().buildTransaction().readOnly().start(); try { QueryContainer qc = new QueryContainer(tx); qc.addQuery().type(wrappedType).direction(direction).relations(); return qc.getSliceQueries(); } finally { tx.rollback(); } } }
final SliceQuery columnSlice = new SliceQuery(BufferUtil.zeroBuffer(8), BufferUtil.oneBuffer(8)).setLimit(1);
protected void finishSetup(ModifiableHadoopConfiguration scanConf, Configuration graphConf) { jobConf = getJobConfiguration(scanConf); Preconditions.checkNotNull(metrics); // Allowed to be null for jobs that specify no configuration and no configuration root //Preconditions.checkNotNull(jobConf); Preconditions.checkNotNull(job); job.workerIterationStart(jobConf, graphConf, metrics); keyFilter = job.getKeyFilter(); List<SliceQuery> sliceQueries = job.getQueries(); Preconditions.checkArgument(null != sliceQueries, "Job cannot specify null query list"); Preconditions.checkArgument(0 < sliceQueries.size(), "Job must specify at least one query"); // Assign head of getQueries() to "initialQuery" initialQuery = sliceQueries.get(0); // Assign tail of getQueries() to "subsequentQueries" subsequentQueries = new ArrayList<>(sliceQueries.subList(1,sliceQueries.size())); Preconditions.checkState(sliceQueries.size() == subsequentQueries.size() + 1); Preconditions.checkNotNull(initialQuery); if (0 < subsequentQueries.size()) { //It is assumed that the first query is the grounding query if multiple queries exist StaticBuffer start = initialQuery.getSliceStart(); Preconditions.checkArgument(start.equals(BufferUtil.zeroBuffer(1)), "Expected start of first query to be all 0s: %s", start); StaticBuffer end = initialQuery.getSliceEnd(); Preconditions.checkArgument(end.equals(BufferUtil.oneBuffer(end.length())), "Expected end of first query to be all 1s: %s", end); } }
protected void finishSetup(ModifiableHadoopConfiguration scanConf, Configuration graphConf) { jobConf = getJobConfiguration(scanConf); Preconditions.checkNotNull(metrics); // Allowed to be null for jobs that specify no configuration and no configuration root //Preconditions.checkNotNull(jobConf); Preconditions.checkNotNull(job); job.workerIterationStart(jobConf, graphConf, metrics); keyFilter = job.getKeyFilter(); List<SliceQuery> sliceQueries = job.getQueries(); Preconditions.checkArgument(null != sliceQueries, "Job cannot specify null query list"); Preconditions.checkArgument(0 < sliceQueries.size(), "Job must specify at least one query"); // Assign head of getQueries() to "initialQuery" initialQuery = sliceQueries.get(0); // Assign tail of getQueries() to "subsequentQueries" subsequentQueries = new ArrayList<>(sliceQueries.subList(1,sliceQueries.size())); Preconditions.checkState(sliceQueries.size() == subsequentQueries.size() + 1); Preconditions.checkNotNull(initialQuery); if (0 < subsequentQueries.size()) { //It is assumed that the first query is the grounding query if multiple queries exist StaticBuffer start = initialQuery.getSliceStart(); Preconditions.checkArgument(start.equals(BufferUtil.zeroBuffer(1)), "Expected start of first query to be all 0s: %s", start); StaticBuffer end = initialQuery.getSliceEnd(); Preconditions.checkArgument(end.equals(BufferUtil.oneBuffer(end.length())), "Expected end of first query to be all 1s: %s", end); } }