public static boolean containsRegion(ITupleReference tuple1, ITupleReference tuple2, MultiComparator cmp, IPrimitiveValueProvider[] keyValueProviders) throws HyracksDataException { int maxFieldPos = cmp.getKeyFieldCount() / 2; for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; int c = cmp.getComparators()[i].compare(tuple1.getFieldData(i), tuple1.getFieldStart(i), tuple1.getFieldLength(i), tuple2.getFieldData(i), tuple2.getFieldStart(i), tuple2.getFieldLength(i)); if (c > 0) { return false; } c = cmp.getComparators()[j].compare(tuple1.getFieldData(j), tuple1.getFieldStart(j), tuple1.getFieldLength(j), tuple2.getFieldData(j), tuple2.getFieldStart(j), tuple2.getFieldLength(j)); if (c < 0) { return false; } } return true; } }
@Override public boolean intersect(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws HyracksDataException { frameTuple.resetByTupleIndex(this, tupleIndex); int maxFieldPos = cmp.getKeyFieldCount() / 2; for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; int c = cmp.getComparators()[i].compare(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i), frameTuple.getFieldData(j), frameTuple.getFieldStart(j), frameTuple.getFieldLength(j)); if (c > 0) { return false; } c = cmp.getComparators()[i].compare(tuple.getFieldData(j), tuple.getFieldStart(j), tuple.getFieldLength(j), frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); if (c < 0) { return false; } } return true; }
@Override public int getChildPageIdIfIntersect(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws HyracksDataException { frameTuple.setFieldCount(cmp.getKeyFieldCount()); frameTuple.resetByTupleIndex(this, tupleIndex); int maxFieldPos = cmp.getKeyFieldCount() / 2; for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; int c = cmp.getComparators()[i].compare(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i), frameTuple.getFieldData(j), frameTuple.getFieldStart(j), frameTuple.getFieldLength(j)); if (c > 0) { return -1; } c = cmp.getComparators()[i].compare(tuple.getFieldData(j), tuple.getFieldStart(j), tuple.getFieldLength(j), frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); if (c < 0) { return -1; } } return buf.getInt(getChildPointerOff(frameTuple)); }
private ArrayList<KeyPartition> getKeyPartitions(BTreeFieldPrefixNSMLeafFrame frame, MultiComparator cmp, int occurrenceThreshold) throws HyracksDataException { IBinaryComparator[] cmps = cmp.getComparators(); int fieldCount = typeTraits.length;
@Override public void enlarge(ITupleReference tuple, MultiComparator cmp) throws HyracksDataException { int maxFieldPos = cmp.getKeyFieldCount() / 2; for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; int c = cmp.getComparators()[i].compare(frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i), tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i)); if (c > 0) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), frameTuple.getFieldData(i), frameTuple.getFieldStart(i), tuple.getFieldLength(i)); } c = cmp.getComparators()[j].compare(frameTuple.getFieldData(j), frameTuple.getFieldStart(j), frameTuple.getFieldLength(j), tuple.getFieldData(j), tuple.getFieldStart(j), tuple.getFieldLength(j)); if (c < 0) { System.arraycopy(tuple.getFieldData(j), tuple.getFieldStart(j), frameTuple.getFieldData(j), frameTuple.getFieldStart(j), tuple.getFieldLength(j)); } } }
return false; IBinaryComparator[] cmps = cmp.getComparators(); int fieldCount = typeTraits.length;
for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; int c = cmp.getComparators()[i].compare(searchKey.getFieldData(i), searchKey.getFieldStart(i), searchKey.getFieldLength(i), searchKey.getFieldData(j), searchKey.getFieldStart(j), searchKey.getFieldLength(j));
for (int j = 0; j < maxFieldPos; j++) { int k = maxFieldPos + j; int c1 = multiCmp.getComparators()[j].compare(frameTuple.getFieldData(j), frameTuple.getFieldStart(j), frameTuple.getFieldLength(j), searchKey.getFieldData(j), searchKey.getFieldStart(j), searchKey.getFieldLength(j)); break; int c2 = multiCmp.getComparators()[k].compare(frameTuple.getFieldData(k), frameTuple.getFieldStart(k), frameTuple.getFieldLength(k), searchKey.getFieldData(k), searchKey.getFieldStart(k), searchKey.getFieldLength(k));
public static double enlargedArea(ITupleReference tuple, ITupleReference tupleToBeInserted, MultiComparator cmp, IPrimitiveValueProvider[] keyValueProviders) throws HyracksDataException { double areaBeforeEnlarge = RTreeComputationUtils.area(tuple, cmp, keyValueProviders); double areaAfterEnlarge = 1.0; int maxFieldPos = cmp.getKeyFieldCount() / 2; for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; double pHigh, pLow; int c = cmp.getComparators()[i].compare(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i), tupleToBeInserted.getFieldData(i), tupleToBeInserted.getFieldStart(i), tupleToBeInserted.getFieldLength(i)); if (c < 0) { pLow = keyValueProviders[i].getValue(tuple.getFieldData(i), tuple.getFieldStart(i)); } else { pLow = keyValueProviders[i].getValue(tupleToBeInserted.getFieldData(i), tupleToBeInserted.getFieldStart(i)); } c = cmp.getComparators()[j].compare(tuple.getFieldData(j), tuple.getFieldStart(j), tuple.getFieldLength(j), tupleToBeInserted.getFieldData(j), tupleToBeInserted.getFieldStart(j), tupleToBeInserted.getFieldLength(j)); if (c > 0) { pHigh = keyValueProviders[j].getValue(tuple.getFieldData(j), tuple.getFieldStart(j)); } else { pHigh = keyValueProviders[j].getValue(tupleToBeInserted.getFieldData(j), tupleToBeInserted.getFieldStart(j)); } areaAfterEnlarge *= pHigh - pLow; } return areaAfterEnlarge - areaBeforeEnlarge; }
double pHigh1, pLow1; if (tupleToBeInserted != null) { int c = cmp.getComparators()[i].compare(tuple1.getFieldData(i), tuple1.getFieldStart(i), tuple1.getFieldLength(i), tupleToBeInserted.getFieldData(i), tupleToBeInserted.getFieldStart(i), tupleToBeInserted.getFieldLength(i)); c = cmp.getComparators()[j].compare(tuple1.getFieldData(j), tuple1.getFieldStart(j), tuple1.getFieldLength(j), tupleToBeInserted.getFieldData(j), tupleToBeInserted.getFieldStart(j), tupleToBeInserted.getFieldLength(j));
for (int i = 0; i < maxFieldPos; i++) { int j = maxFieldPos + i; int c = ctx.getCmp().getComparators()[i].compare(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i), tuple.getFieldData(j), tuple.getFieldStart(j), tuple.getFieldLength(j));