private static Optional resolveUpdateItemTarget()

in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/tools/lineage/ColumnLineageExtractor.java [210:224]


  private static Optional<ResolvedColumn> resolveUpdateItemTarget(ResolvedExpr updateTarget) {
    if (updateTarget instanceof ResolvedColumnRef) {
      ResolvedColumnRef columnRef = (ResolvedColumnRef) updateTarget;
      return Optional.of(columnRef.getColumn());
    } else if (updateTarget instanceof ResolvedGetStructField) {
      ResolvedGetStructField getStructField = (ResolvedGetStructField) updateTarget;
      int structFieldIdx = (int) getStructField.getFieldIdx();
      String fieldName =
          getStructField.getExpr().getType().asStruct().getField(structFieldIdx).getName();
      return resolveUpdateItemTarget(getStructField.getExpr())
          .map(target -> buildColumnSubfield(target, fieldName, getStructField.getType()));
    }

    return Optional.empty();
  }