hive-protolib/src/main/java/com/streamsets/pipeline/stage/lib/hive/HiveMetastoreUtil.java
private static int resolveScaleOrPrecisionExpression(
      String type,
      ELEval elEval,
      ELVars variables,
      String defaultScaleEL,
      String fieldPath
  ) throws ELEvalException, HiveStageCheckedException {
    // By default we take the constant given to this method
    String value = defaultScaleEL;
    // And if so evaluate it
    if (elEval != null) {
      value = elEval.eval(
          variables,
          defaultScaleEL,
          String.class
      );
    }

    // Finally try to parse output as an integer. Failure means that we are unable to calculate proper scale/precision.
    try {
      return Integer.parseInt(value);
    } catch(NumberFormatException e) {
      throw new HiveStageCheckedException(Errors.HIVE_29, type, fieldPath, defaultScaleEL, value, e);
    }
  }
private static int resolveScaleOrPrecisionExpression(
      String type,
      ELEval elEval,
      ELVars variables,
      String defaultScaleEL,
      String fieldPath
  ) throws ELEvalException, HiveStageCheckedException {
    // By default we take the constant given to this method
    String value = defaultScaleEL;
    // And if so evaluate it
    if (elEval != null) {
      value = elEval.eval(
          variables,
          defaultScaleEL,
          String.class
      );
    }

    // Finally try to parse output as an integer. Failure means that we are unable to calculate proper scale/precision.
    try {
      return Integer.parseInt(value);
    } catch(NumberFormatException e) {
      throw new HiveStageCheckedException(Errors.HIVE_29, type, fieldPath, defaultScaleEL, value, e);
    }
  }
Evaluate precision or scale in context of record and given field path.