@Override public int getFieldLength(int fIdx) { int leftFieldCount = refLeft.getFieldCount(); if (fIdx < leftFieldCount) { return refLeft.getFieldLength(fIdx); } else { return refRight.getFieldLength(fIdx - leftFieldCount); } }
@Override public void nextFrame(ByteBuffer buffer) throws HyracksDataException { tAccess.reset(buffer); int nTuple = tAccess.getTupleCount(); for (int t = 0; t < nTuple; t++) { tRef.reset(tAccess, t); for (int i = 0; i < printers.length; i++) { printers[i].print(buffer.array(), tRef.getFieldStart(i), tRef.getFieldLength(i), ps); ps.print(fieldDelimiter); if (i == printers.length - 1) { ps.print('\n'); } } } }
private void propagateInputFields(int idx) throws IOException { frameTuple.reset(tupleAccessor, idx); for (int i = 0; i < frameTuple.getFieldCount(); i++) { tb.getDataOutput().write(frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); tb.addFieldEndOffset(); } }
@Override public void nextFrame(ByteBuffer buffer) throws HyracksDataException { // "buffer" contains the serialized range map sent by a range map computer function. // deserialize the range map frameTupleAccessor.reset(buffer); if (frameTupleAccessor.getTupleCount() != 1) { throw HyracksDataException.create(ErrorCode.ONE_TUPLE_RANGEMAP_EXPECTED, sourceLoc); } frameTupleReference.reset(frameTupleAccessor, 0); byte[] rangeMap = frameTupleReference.getFieldData(0); int offset = frameTupleReference.getFieldStart(0); int length = frameTupleReference.getFieldLength(0); ByteArrayInputStream rangeMapIn = new ByteArrayInputStream(rangeMap, offset, length); DataInputStream dataInputStream = new DataInputStream(rangeMapIn); numFields = IntegerSerializerDeserializer.read(dataInputStream); splitValues = ByteArraySerializerDeserializer.read(dataInputStream); splitValuesEndOffsets = IntArraySerializerDeserializer.read(dataInputStream); }
private void writeOutput(int tupleIndex, boolean recordWasInserted, boolean recordWasDeleted) throws IOException { if (recordWasInserted || recordWasDeleted) { frameTuple.reset(accessor, tupleIndex); for (int i = 0; i < frameTuple.getFieldCount(); i++) { dos.write(frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); tb.addFieldEndOffset(); } FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize()); } else { try { searchCallback.release(); } catch (ACIDException e) { throw HyracksDataException.create(e); } } }
@Override protected void writeSearchResults(int tupleIndex) throws Exception { while (cursor.hasNext()) { tb.reset(); cursor.next(); if (retainInput) { frameTuple.reset(accessor, tupleIndex); for (int i = 0; i < frameTuple.getFieldCount(); i++) { dos.write(frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); tb.addFieldEndOffset(); } } ITupleReference tuple = cursor.getTuple(); tupleUpdater.updateTuple(tuple); for (int i = 0; i < tuple.getFieldCount(); i++) { dos.write(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i)); tb.addFieldEndOffset(); } FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize()); } } }
@Override public void nextFrame(ByteBuffer buffer) throws HyracksDataException { accessor.reset(buffer); int tupleCount = accessor.getTupleCount(); for (int i = 0; i < tupleCount; i++) { tuple.reset(accessor, i); short numTokens = 0; if (!isDocFieldMissing(tuple)) { tokenizer.reset(tuple.getFieldData(docField), tuple.getFieldStart(docField), tuple.getFieldLength(docField)); if (addNumTokensKey) { // Get the total number of tokens. numTokens = tokenizer.getTokensCount(); } // Write token and data into frame by following the order specified // in the writeKeyFieldsFirst field. while (tokenizer.hasNext()) { tokenizer.next(); IToken token = tokenizer.getToken(); writeTuple(token, numTokens, i); } } else if (writeMissing) { writeTuple(null, 0, i); } } }
upsertIndicatorInspector.getBooleanValue(frameTuple.getFieldData(upsertIndicatorFieldIndex), frameTuple.getFieldStart(upsertIndicatorFieldIndex), frameTuple.getFieldLength(upsertIndicatorFieldIndex));
frameTuple.reset(accessor, tupleIndex); for (int i = 0; i < frameTuple.getFieldCount(); i++) { dos.write(frameTuple.getFieldData(i), frameTuple.getFieldStart(i), frameTuple.getFieldLength(i)); tb.addFieldEndOffset();