Merged in 32 bit tuple fields offset patch from Rares
git-svn-id: https://hyracks.googlecode.com/svn/trunk/hyracks@400 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java b/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java
index c132032..8ab5d4f 100644
--- a/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java
+++ b/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java
@@ -28,7 +28,7 @@
* A frame is formatted with tuple data concatenated starting at offset 0, one tuple after another.
* Offset FS - 4 holds an int indicating the number of tuples (N) in the frame. FS - ((i + 1) * 4) for i from
* 0 to N - 1 holds an int indicating the offset of the (i + 1)^th tuple.
- * Every tuple is organized as a sequence of shorts indicating the end of each field in the tuple relative to the end of the
+ * Every tuple is organized as a sequence of ints indicating the end of each field in the tuple relative to the end of the
* field slots.
*
* @author vinayakb
@@ -71,12 +71,12 @@
@Override
public int getFieldStartOffset(int tupleIndex, int fIdx) {
- return fIdx == 0 ? 0 : buffer.getShort(getTupleStartOffset(tupleIndex) + (fIdx - 1) * 2);
+ return fIdx == 0 ? 0 : buffer.getInt(getTupleStartOffset(tupleIndex) + (fIdx - 1) * 4);
}
@Override
public int getFieldEndOffset(int tupleIndex, int fIdx) {
- return buffer.getShort(getTupleStartOffset(tupleIndex) + fIdx * 2);
+ return buffer.getInt(getTupleStartOffset(tupleIndex) + fIdx * 4);
}
@Override
@@ -86,7 +86,7 @@
@Override
public int getFieldSlotsLength() {
- return recordDescriptor.getFields().length * 2;
+ return recordDescriptor.getFields().length * 4;
}
public void prettyPrint() {
diff --git a/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAppender.java b/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAppender.java
index 2e9daf3..d50b702 100644
--- a/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAppender.java
+++ b/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/comm/io/FrameTupleAppender.java
@@ -46,12 +46,12 @@
}
public boolean append(int[] fieldSlots, byte[] bytes, int offset, int length) {
- if (tupleDataEndOffset + fieldSlots.length * 2 + length + 4 + (tupleCount + 1) * 4 <= frameSize) {
+ if (tupleDataEndOffset + fieldSlots.length * 4 + length + 4 + (tupleCount + 1) * 4 <= frameSize) {
for (int i = 0; i < fieldSlots.length; ++i) {
- buffer.putShort(tupleDataEndOffset + i * 2, (short) fieldSlots[i]);
+ buffer.putInt(tupleDataEndOffset + i * 4, fieldSlots[i]);
}
- System.arraycopy(bytes, offset, buffer.array(), tupleDataEndOffset + fieldSlots.length * 2, length);
- tupleDataEndOffset += fieldSlots.length * 2 + length;
+ System.arraycopy(bytes, offset, buffer.array(), tupleDataEndOffset + fieldSlots.length * 4, length);
+ tupleDataEndOffset += fieldSlots.length * 4 + length;
buffer.putInt(FrameHelper.getTupleCountOffset(frameSize) - 4 * (tupleCount + 1), tupleDataEndOffset);
++tupleCount;
buffer.putInt(FrameHelper.getTupleCountOffset(frameSize), tupleCount);
@@ -99,9 +99,9 @@
// Copy slots from accessor0 verbatim
System.arraycopy(src0.array(), startOffset0, buffer.array(), tupleDataEndOffset, slotsLen0);
// Copy slots from accessor1 with the following transformation: newSlotIdx = oldSlotIdx + dataLen0
- for (int i = 0; i < slotsLen1 / 2; ++i) {
- buffer.putShort(tupleDataEndOffset + slotsLen0 + i * 2,
- (short) (src1.getShort(startOffset1 + i * 2) + dataLen0));
+ for (int i = 0; i < slotsLen1 / 4; ++i) {
+ buffer.putInt(tupleDataEndOffset + slotsLen0 + i * 4,
+ src1.getInt(startOffset1 + i * 4) + dataLen0);
}
// Copy data0
System.arraycopy(src0.array(), startOffset0 + slotsLen0, buffer.array(), tupleDataEndOffset + slotsLen0
@@ -119,7 +119,7 @@
}
public boolean appendProjection(IFrameTupleAccessor accessor, int tIndex, int[] fields) {
- int fTargetSlotsLength = fields.length * 2;
+ int fTargetSlotsLength = fields.length * 4;
int length = fTargetSlotsLength;
for (int i = 0; i < fields.length; ++i) {
length += (accessor.getFieldEndOffset(tIndex, fields[i]) - accessor.getFieldStartOffset(tIndex, fields[i]));
@@ -138,7 +138,7 @@
System.arraycopy(accessor.getBuffer().array(), fSrcStart, buffer.array(), tupleDataEndOffset
+ fTargetSlotsLength + fStartOffset, fLen);
fEndOffset += fLen;
- buffer.putShort(tupleDataEndOffset + i * 2, (short) fEndOffset);
+ buffer.putInt(tupleDataEndOffset + i * 4, fEndOffset);
fStartOffset = fEndOffset;
}
tupleDataEndOffset += length;
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java
index a99cba9..2ddffde 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java
@@ -69,7 +69,7 @@
throws HyracksDataException {
count = IntegerSerializerDeserializer.getInt(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
@@ -89,7 +89,7 @@
throws HyracksDataException {
count += IntegerSerializerDeserializer.getInt(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
};
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java
index 7e6bc8c..8fd1f13 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java
@@ -103,7 +103,7 @@
throws HyracksDataException {
sum = FloatSerializerDeserializer.getFloat(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
@@ -117,7 +117,7 @@
throws HyracksDataException {
sum += FloatSerializerDeserializer.getFloat(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java
index 0c3b0d5..cc999d5 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java
@@ -100,7 +100,7 @@
throws HyracksDataException {
minmax = FloatSerializerDeserializer.getFloat(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
@@ -115,7 +115,7 @@
throws HyracksDataException {
minmax = FloatSerializerDeserializer.getFloat(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java
index 64335f1..c6bcc81 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java
@@ -102,7 +102,7 @@
throws HyracksDataException {
sum = IntegerSerializerDeserializer.getInt(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
@@ -116,7 +116,7 @@
throws HyracksDataException {
sum += IntegerSerializerDeserializer.getInt(
accessor.getBuffer().array(),
- accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 2
+ accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+ accessor.getFieldStartOffset(tIndex, fIndex));
}
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/sort/FrameSorter.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/sort/FrameSorter.java
index 603b194..3742e91 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/sort/FrameSorter.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/sort/FrameSorter.java
@@ -240,12 +240,12 @@
fta2.reset(buf2);
for (int f = 0; f < comparators.length; ++f) {
int fIdx = sortFields[f];
- int f1Start = fIdx == 0 ? 0 : buf1.getShort(j1 + (fIdx - 1) * 2);
- int f1End = buf1.getShort(j1 + fIdx * 2);
+ int f1Start = fIdx == 0 ? 0 : buf1.getInt(j1 + (fIdx - 1) * 4);
+ int f1End = buf1.getInt(j1 + fIdx * 4);
int s1 = j1 + fta1.getFieldSlotsLength() + f1Start;
int l1 = f1End - f1Start;
- int f2Start = fIdx == 0 ? 0 : buf2.getShort(j2 + (fIdx - 1) * 2);
- int f2End = buf2.getShort(j2 + fIdx * 2);
+ int f2Start = fIdx == 0 ? 0 : buf2.getInt(j2 + (fIdx - 1) * 4);
+ int f2End = buf2.getInt(j2 + fIdx * 4);
int s2 = j2 + fta2.getFieldSlotsLength() + f2Start;
int l2 = f2End - f2Start;
int c = comparators[f].compare(b1, s1, l1, b2, s2, l2);
diff --git a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleReference.java b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleReference.java
index eb9fe2e..d2b2892 100644
--- a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleReference.java
+++ b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleReference.java
@@ -67,10 +67,10 @@
@Override
public int getFieldLength(int fIdx) {
if (fIdx == 0) {
- return buf.getShort(tupleStartOff + nullFlagsBytes);
+ return buf.getInt(tupleStartOff + nullFlagsBytes);
} else {
- return buf.getShort(tupleStartOff + nullFlagsBytes + fIdx * 2)
- - buf.getShort(tupleStartOff + nullFlagsBytes + ((fIdx - 1) * 2));
+ return buf.getInt(tupleStartOff + nullFlagsBytes + fIdx * 4)
+ - buf.getInt(tupleStartOff + nullFlagsBytes + ((fIdx - 1) * 4));
}
}
@@ -80,7 +80,7 @@
return tupleStartOff + nullFlagsBytes + fieldSlotsBytes;
} else {
return tupleStartOff + nullFlagsBytes + fieldSlotsBytes
- + buf.getShort(tupleStartOff + nullFlagsBytes + ((fIdx - 1) * 2));
+ + buf.getInt(tupleStartOff + nullFlagsBytes + ((fIdx - 1) * 4));
}
}
@@ -89,6 +89,6 @@
}
protected int getFieldSlotsBytes() {
- return fieldCount * 2;
+ return fieldCount * 4;
}
-}
\ No newline at end of file
+}
diff --git a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleWriter.java b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleWriter.java
index e2966ee..1eaa90d 100644
--- a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleWriter.java
+++ b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/tuples/SimpleTupleWriter.java
@@ -62,7 +62,7 @@
.getFieldLength(i));
fieldEndOff += tuple.getFieldLength(i);
runner += tuple.getFieldLength(i);
- targetBuf.putShort(targetOff + nullFlagsBytes + i * 2, (short) fieldEndOff);
+ targetBuf.putInt(targetOff + nullFlagsBytes + i * 4, fieldEndOff);
}
return runner - targetOff;
@@ -85,7 +85,7 @@
.getFieldLength(i));
fieldEndOff += tuple.getFieldLength(i);
runner += tuple.getFieldLength(i);
- targetBuf.putShort(targetOff + nullFlagsBytes + fieldCounter * 2, (short) fieldEndOff);
+ targetBuf.putInt(targetOff + nullFlagsBytes + fieldCounter * 4, fieldEndOff);
fieldCounter++;
}
@@ -97,7 +97,7 @@
}
private int getFieldSlotsBytes(ITupleReference tuple) {
- return tuple.getFieldCount() * 2;
+ return tuple.getFieldCount() * 4;
}
private int getNullFlagsBytes(ITupleReference tuple, int startField, int numFields) {
@@ -105,6 +105,6 @@
}
private int getFieldSlotsBytes(ITupleReference tuple, int startField, int numFields) {
- return numFields * 2;
+ return numFields * 4;
}
}