private TableRecordInfoDigest createDigest() { // isMetric boolean[] isMetric = new boolean[nColumns]; for (int i = 0; i < nColumns; ++i) { isMetric[i] = desc.isMetricsCol(i); } // lengths int[] lengths = new int[nColumns]; for (int i = 0; i < nColumns; ++i) { lengths[i] = isMetric[i] ? measureSerializers[i].getLength() : dictionaries[i].getSizeOfId(); } // dict max id int[] dictMaxIds = new int[nColumns]; for (int i = 0; i < nColumns; ++i) { if (!isMetric[i]) dictMaxIds[i] = dictionaries[i].getMaxId(); } // offsets int pos = 0; int[] offsets = new int[nColumns]; for (int i = 0; i < nColumns; i++) { offsets[i] = pos; pos += lengths[i]; } int byteFormLen = pos; return new TableRecordInfoDigest(nColumns, byteFormLen, offsets, dictMaxIds, lengths, isMetric, measureSerializers); }
@Override public TableRecordInfoDigest deserialize(ByteBuffer in) { TableRecordInfoDigest result = new TableRecordInfoDigest(); result.nColumns = BytesUtil.readVInt(in); result.byteFormLen = BytesUtil.readVInt(in); result.offsets = BytesUtil.readIntArray(in); result.dictMaxIds = BytesUtil.readIntArray(in); result.lengths = BytesUtil.readIntArray(in); result.isMetric = BytesUtil.readBooleanArray(in); result.measureSerializers = new FixedLenMeasureCodec<?>[result.nColumns]; for (int i = 0; i < result.nColumns; ++i) { String typeStr = BytesUtil.readAsciiString(in); if (typeStr == null) { result.measureSerializers[i] = null; } else { result.measureSerializers[i] = FixedLenMeasureCodec .get(DataType.getInstance(typeStr)); } } return result; }
@Override public TableRecordInfoDigest deserialize(ByteBuffer in) { TableRecordInfoDigest result = new TableRecordInfoDigest(); result.nColumns = BytesUtil.readVInt(in); result.byteFormLen = BytesUtil.readVInt(in); result.offsets = BytesUtil.readIntArray(in); result.dictMaxIds = BytesUtil.readIntArray(in); result.lengths = BytesUtil.readIntArray(in); result.isMetric = BytesUtil.readBooleanArray(in); result.metricDataTypes = BytesUtil.readAsciiStringArray(in); return result; }
return new TableRecordInfoDigest(nColumns, byteFormLen, offsets, dictMaxIds, lengths, isMetric, dataTypes);
return new TableRecordInfoDigest(nColumns, byteFormLen, offsets, dictMaxIds, lengths, isMetric, dataTypes);