void subSerialize(IWALByteBufferView buffer, List<int[]> rangeList) {
    buffer.putLong(searchIndex);
    WALWriteUtils.write(targetPath.getFullPath(), buffer);
    // data types are serialized in measurement schemas
    writeMeasurementSchemas(buffer);
    int rowNumInRange = 0;
    for (int[] startEnd : rangeList) {
      rowNumInRange += startEnd[1] - startEnd[0];
    }
    writeTimes(buffer, rangeList, rowNumInRange);
    writeBitMaps(buffer, rangeList, rowNumInRange);
    writeValues(buffer, rangeList);
    buffer.put((byte) (isAligned ? 1 : 0));
  }
Compared with {@link this#serialize(ByteBuffer)}, more info: search index and data types, less
info: isNeedInferType
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java