public TupleRange(final SortSpec[] sortSpecs, final Tuple start, final Tuple end) { this.comp = new TupleComparator(sortSpecsToSchema(sortSpecs), sortSpecs); // if there is only one value, start == end this.start = start; this.end = end; }
if(!comparator.isAscendingFirstKey()) { Tuple tmpKey = start; start = end; if (comparator.compare(end, idxReader.getFirstKey()) < 0 || comparator.compare(idxReader.getLastKey(), start) < 0) { LOG.info("Out of Scope (indexed data [" + idxReader.getFirstKey() + ", " + idxReader.getLastKey() + "], but request start:" + start + ", end: " + end); && comparator.compare(idxReader.getLastKey(), end) < 0)) { endOffset = data.length();
byte [] comparatorBytes = compartor.getProto().toByteArray();
byte [] comparatorBytes = compartor.getProto().toByteArray();
public void writeHeader(int entryNum) throws IOException { // schema byte [] schemaBytes = keySchema.getProto().toByteArray(); out.writeInt(schemaBytes.length); out.write(schemaBytes); // comparator byte [] comparatorBytes = compartor.getProto().toByteArray(); out.writeInt(comparatorBytes.length); out.write(comparatorBytes); // level out.writeInt(this.level); // entry out.writeInt(entryNum); if (entryNum > 0) { byte [] minBytes = rowStoreEncoder.toBytes(firstKey); out.writeInt(minBytes.length); out.write(minBytes); byte [] maxBytes = rowStoreEncoder.toBytes(lastKey); out.writeInt(maxBytes.length); out.write(maxBytes); } out.flush(); }
private void readHeader() throws IOException { // schema int schemaByteSize = indexIn.readInt(); byte [] schemaBytes = new byte[schemaByteSize]; StorageUtil.readFully(indexIn, schemaBytes, 0, schemaByteSize); SchemaProto.Builder builder = SchemaProto.newBuilder(); builder.mergeFrom(schemaBytes); SchemaProto proto = builder.build(); this.keySchema = new Schema(proto); this.rowStoreDecoder = RowStoreUtil.createDecoder(keySchema); // comparator int compByteSize = indexIn.readInt(); byte [] compBytes = new byte[compByteSize]; StorageUtil.readFully(indexIn, compBytes, 0, compByteSize); TupleComparatorProto.Builder compProto = TupleComparatorProto.newBuilder(); compProto.mergeFrom(compBytes); this.comparator = new TupleComparator(compProto.build()); // level this.level = indexIn.readInt(); // entry this.entryNum = indexIn.readInt(); if (entryNum > 0) { // if there is no any entry, do not read firstKey/lastKey values byte [] minBytes = new byte[indexIn.readInt()]; StorageUtil.readFully(indexIn, minBytes, 0, minBytes.length); this.firstKey = rowStoreDecoder.toTuple(minBytes); byte [] maxBytes = new byte[indexIn.readInt()]; StorageUtil.readFully(indexIn, maxBytes, 0, maxBytes.length); this.lastKey = rowStoreDecoder.toTuple(maxBytes); } }
if (comparator.compare(arr[centerPos], key) > 0) { if (centerPos == 0) { correctable = false; break; } else if (comparator.compare(arr[centerPos - 1], key) < 0) { correctable = false; offset = centerPos - 1; centerPos = (start + end) / 2; } else if (comparator.compare(arr[centerPos], key) < 0) { if (centerPos == arr.length - 1) { correctable = false; offset = centerPos; break; } else if (comparator.compare(arr[centerPos + 1], key) > 0) { correctable = false; offset = centerPos;
if (comparator.compare(arr[centerPos], key) > 0) { if (centerPos == 0) { correctable = false; break; } else if (comparator.compare(arr[centerPos - 1], key) < 0) { correctable = false; offset = centerPos - 1; centerPos = (start + end) / 2; } else if (comparator.compare(arr[centerPos], key) < 0) { if (centerPos == arr.length - 1) { correctable = false; offset = centerPos; break; } else if (comparator.compare(arr[centerPos + 1], key) > 0) { correctable = false; offset = centerPos;
if (comparator.compare(arr[centerPos], key) > 0) { if (centerPos == 0) { correctable = false; break; } else if (comparator.compare(arr[centerPos - 1], key) < 0) { correctable = false; offset = centerPos - 1; centerPos = (start + end) / 2; } else if (comparator.compare(arr[centerPos], key) < 0) { if (centerPos == arr.length - 1) { correctable = false; offset = centerPos; break; } else if (comparator.compare(arr[centerPos + 1], key) > 0) { correctable = false; offset = centerPos;
@Override public void write(final Tuple key, final long offset) throws IOException { Tuple keyTuple; try { keyTuple = key.clone(); } catch (CloneNotSupportedException e) { throw new IOException(e); } if (firstKey == null || compartor.compare(keyTuple, firstKey) < 0) { firstKey = keyTuple; } if (lastKey == null || compartor.compare(lastKey, keyTuple) < 0) { lastKey = keyTuple; } if (sorted) { /* root index writing */ if (writeRootIndex) { if (loadCount == loadNum) { loadCount = 0; writeRootIndex(rootIndexBuffer, keyTuple, filePos + indexBuffer.writerIndex()); } loadCount++; } /* leaf index writing */ writeIndex(indexBuffer, keyTuple, offset); } else { collector.put(keyTuple, offset); } }
@Override public void write(final Tuple key, final long offset) throws IOException { Tuple keyTuple; try { keyTuple = key.clone(); } catch (CloneNotSupportedException e) { throw new IOException(e); } if (firstKey == null || compartor.compare(keyTuple, firstKey) < 0) { firstKey = keyTuple; } if (lastKey == null || compartor.compare(lastKey, keyTuple) < 0) { lastKey = keyTuple; } if (sorted) { /* root index writing */ if (writeRootIndex) { if (loadCount == loadNum) { loadCount = 0; writeRootIndex(rootIndexBuffer, keyTuple, filePos + indexBuffer.writerIndex()); } loadCount++; } /* leaf index writing */ writeIndex(indexBuffer, keyTuple, offset); } else { collector.put(keyTuple, offset); } }
if (comparator.compare(end, idxReader.getFirstKey()) < 0 || comparator.compare(idxReader.getLastKey(), start) < 0) { LOG.warn("Out of Scope (indexed data [" + idxReader.getFirstKey() + ", " + idxReader.getLastKey() + "], but request start:" + start + ", end: " + end); && comparator.compare(idxReader.getLastKey(), end) < 0)) { endOffset = data.length();
if (comparator.compare(dataRange.getEnd(), tupleRanges.get(tupleRanges.size() - 1).getStart()) >= 0) { tupleRanges.get(tupleRanges.size() - 1).setEnd(dataRange.getEnd()); } else {