public String getString(Column storeColumn) { int index = storeColumn.getColumnId(); NdbRecAttr ndbRecAttr = ndbRecAttrs[index]; if (ndbRecAttr.isNULL() == 1) return null; int prefixLength = storeColumn.getPrefixLength(); int actualLength; int offset = offsets[index]; byteBuffer.limit(byteBuffer.capacity()); switch (prefixLength) { case 0: actualLength = lengths[index]; break; case 1: actualLength = (byteBuffer.get(offset) + 256) % 256; offset += 1; break; case 2: actualLength = (byteBuffer.get(offset) + 256) % 256; int length2 = (byteBuffer.get(offset + 1) + 256) % 256; actualLength += 256 * length2; offset += 2; break; default: throw new ClusterJFatalInternalException( local.message("ERR_Invalid_Prefix_Length", prefixLength)); } byteBuffer.position(offset); byteBuffer.limit(offset + actualLength); String result = Utility.decode(byteBuffer, storeColumn.getCharsetNumber(), bufferManager); byteBuffer.clear(); return result; }