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);
}