@SuppressWarnings("unchecked") public void insertDoubleTuples(IIndexTestContext ctx, int numTuples, Random rnd) throws Exception { int fieldCount = ctx.getFieldCount(); int numKeyFields = ctx.getKeyFieldCount(); double[] fieldValues = new double[ctx.getFieldCount()]; // Scale range of values according to number of keys. // For example, for 2 keys we want the square root of numTuples, for 3 // keys the cube root of numTuples, etc. double maxValue = Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields)); for (int i = 0; i < numTuples; i++) { // Set keys. setDoubleKeyFields(fieldValues, numKeyFields, maxValue, rnd); // Set values. setDoublePayloadFields(fieldValues, numKeyFields, fieldCount); TupleUtils.createDoubleTuple(ctx.getTupleBuilder(), ctx.getTuple(), fieldValues); if (LOGGER.isLoggable(Level.INFO)) { if ((i + 1) % (numTuples / Math.min(10, numTuples)) == 0) { LOGGER.info("Inserting Tuple " + (i + 1) + "/" + numTuples); } } try { ctx.getIndexAccessor().insert(ctx.getTuple()); ctx.insertCheckTuple( createDoubleCheckTuple(fieldValues, ctx.getKeyFieldCount()), ctx.getCheckTuples()); } catch (TreeIndexException e) { // We set expected values only after insertion succeeds because // we // ignore duplicate keys. } } }
@SuppressWarnings("unchecked") public void bulkLoadDoubleTuples(IIndexTestContext ctx, int numTuples, Random rnd) throws Exception { int fieldCount = ctx.getFieldCount(); int numKeyFields = ctx.getKeyFieldCount(); double[] fieldValues = new double[ctx.getFieldCount()]; double maxValue = Math.ceil(Math.pow(numTuples, 1.0 / (double) numKeyFields)); Collection<CheckTuple> tmpCheckTuples = createCheckTuplesCollection(); for (int i = 0; i < numTuples; i++) { // Set keys. setDoubleKeyFields(fieldValues, numKeyFields, maxValue, rnd); // Set values. setDoublePayloadFields(fieldValues, numKeyFields, fieldCount); // Set expected values. ctx.insertCheckTuple( createDoubleCheckTuple(fieldValues, ctx.getKeyFieldCount()), tmpCheckTuples); } bulkLoadCheckTuples(ctx, tmpCheckTuples); // Add tmpCheckTuples to ctx check tuples for comparing searches. for (CheckTuple checkTuple : tmpCheckTuples) { ctx.insertCheckTuple(checkTuple, ctx.getCheckTuples()); } }
@Override protected boolean checkDiskOrderScanResult( ITupleReference tuple, CheckTuple checkTuple, IIndexTestContext ctx) throws HyracksDataException { return ctx.getCheckTuples().contains(checkTuple); }
@Override protected ArrayTupleBuilder createDeleteTupleBuilder(IIndexTestContext ctx) { return new ArrayTupleBuilder(ctx.getFieldCount()); }