in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/tools/lineage/ParentColumnFinder.java [184:203]
public void visit(ResolvedComputedColumn computedColumn) {
// When visiting a resolved column, register it in the columnsToParents Map together with
// its direct parents.
ResolvedColumn column = computedColumn.getColumn();
ResolvedExpr expression = computedColumn.getExpr();
columnsBeingComputed.push(column);
if (expression instanceof ResolvedMakeStruct) {
expandMakeStruct(column, (ResolvedMakeStruct) expression);
} else {
List<ResolvedColumn> expressionParents =
ExpressionParentFinder.findDirectParentsForExpression(expression);
columnsBeingComputed.forEach(
columnBeingComputed -> addParentsToColumn(columnBeingComputed, expressionParents));
}
columnsBeingComputed.pop();
}