protected static RelationalInsertRowNode subDeserializeFromWAL(DataInputStream stream)
      throws IOException {
    // we do not store plan node id in wal entry
    RelationalInsertRowNode insertNode = new RelationalInsertRowNode(new PlanNodeId(""));
    insertNode.setTime(stream.readLong());
    try {
      insertNode.setTargetPath(insertNode.readTargetPath(stream));
    } catch (IllegalPathException e) {
      throw new IllegalArgumentException(DESERIALIZE_ERROR, e);
    }
    insertNode.deserializeMeasurementsAndValuesFromWAL(stream);
    TsTableColumnCategory[] newColumnCategories =
        new TsTableColumnCategory[insertNode.dataTypes.length];
    for (int i = 0; i < insertNode.dataTypes.length; i++) {
      newColumnCategories[i] = TsTableColumnCategory.deserialize(stream);
    }
    insertNode.setColumnCategories(newColumnCategories);
    return insertNode;
  }
Deserialize from wal.

@param stream - DataInputStream
@return RelationalInsertRowNode
@throws IOException - If an I/O error occurs.
@throws IllegalArgumentException - If meets illegal argument.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowNode.java