public static LineageInfo.DependencyType getNewDependencyType(
      LineageInfo.DependencyType old_type, LineageInfo.DependencyType curr_type) {
    if (old_type == LineageInfo.DependencyType.SCRIPT ||
        curr_type == LineageInfo.DependencyType.SCRIPT) {
      return LineageInfo.DependencyType.SCRIPT;
    }

    if (old_type == LineageInfo.DependencyType.EXPRESSION ||
        curr_type == LineageInfo.DependencyType.EXPRESSION) {
      return LineageInfo.DependencyType.EXPRESSION;
    }

    return LineageInfo.DependencyType.SIMPLE;
  }
Gets the new dependency type by comparing the old dependency type and the
current dependency type. The current dependency type is the dependency imposed
by the current expression. Typically the dependency type is computed using
the following rules:
   SCRIPT - In case anywhere in the lineage tree there was a script operator, otherwise
   EXPRESSION - In case anywhere in the lineage tree a union,
                udf, udaf or udtf was done, otherwise
   SIMPLE - This captures direct column copies.

@param old_type The old dependency type.
@param curr_type The current operators dependency type.
@return the dependency type
ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/LineageCtx.java