Skip to content

Commit

Permalink
Restore "[FLINK-12879][Table SQL / Runtime] Restore the logic for wri…
Browse files Browse the repository at this point in the history
…ting string"

This reverts commit a938dd7.
  • Loading branch information
liyafan82 committed Jul 1, 2019
1 parent c17460e commit 019c5c0
Showing 1 changed file with 3 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ public void writeString(int pos, BinaryString input) {
} else {
int len = input.getSizeInBytes();
if (len <= MAX_FIX_PART_DATA_SIZE) {
writeBytesToFixLenPart(segment, getFieldOffset(pos), input.getSegments(), input.getOffset(), len);
byte[] bytes = SegmentsUtil.allocateReuseBytes(len);
SegmentsUtil.copyToBytes(input.getSegments(), input.getOffset(), bytes, 0, len);
writeBytesToFixLenPart(segment, getFieldOffset(pos), bytes, len);
} else {
writeSegmentsToVarLenPart(pos, input.getSegments(), input.getOffset(), len);
}
Expand Down Expand Up @@ -300,27 +302,6 @@ private static void writeBytesToFixLenPart(
segment.putLong(fieldOffset, offsetAndSize);
}

private static void writeBytesToFixLenPart(
MemorySegment segment, int fieldOffset, MemorySegment[] srcSegments, int srcOffset, int len) {
long firstByte = len | 0x80; // first bit is 1, other bits is len
long sevenBytes = 0L; // real data
if (BinaryRow.LITTLE_ENDIAN) {
for (int i = 0; i < len; i++) {
byte b = SegmentsUtil.getByte(srcSegments, srcOffset + i);
sevenBytes |= ((0x00000000000000FFL & b) << (i * 8L));
}
} else {
for (int i = 0; i < len; i++) {
byte b = SegmentsUtil.getByte(srcSegments, srcOffset + i);
sevenBytes |= ((0x00000000000000FFL & b) << ((6 - i) * 8L));
}
}

final long offsetAndSize = (firstByte << 56) | sevenBytes;

segment.putLong(fieldOffset, offsetAndSize);
}

/**
* OutputView for write Generic.
*/
Expand Down

0 comments on commit 019c5c0

Please sign in to comment.