@Override
  public TSDataType getDataType(int index) {
    if (isNeedInferType && (dataTypes == null || dataTypes[index] == null)) {
      if (dataTypes == null) {
        dataTypes = new TSDataType[measurements.length];
      }
      dataTypes[index] = TypeInferenceUtils.getPredictedDataType(values[index], true);
      return dataTypes[index];
    } else {
      return dataTypes != null ? dataTypes[index] : null;
    }
  }
transfer String[] values to specific data types when isNeedInferType is true. <br>
Notice: measurementSchemas must be initialized before calling this method
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowStatement.java