private static Optional extractColumnLevelLineageForUpdateItem()

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


  private static Optional<ColumnLineage> extractColumnLevelLineageForUpdateItem(
      Table targetTable, ResolvedUpdateItem updateItem, ResolvedStatement originalStatement) {

    ResolvedExpr targetExpression = updateItem.getTarget();
    ResolvedExpr updateExpression = updateItem.getSetValue().getValue();

    Optional<ResolvedColumn> maybeTargetColumn = resolveUpdateItemTarget(targetExpression);

    if (!maybeTargetColumn.isPresent()) {
      return Optional.empty();
    }

    ResolvedColumn targetColumn = maybeTargetColumn.get();

    List<ResolvedColumn> parents =
        ParentColumnFinder.findParentsForExpression(originalStatement, updateExpression);

    ColumnLineage result =
        buildColumnLineage(targetTable.getFullName(), targetColumn.getName(), parents);

    return Optional.of(result);
  }