in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/tools/lineage/ParentColumnFinder.java [318:336]
public void visit(ResolvedSetOperationScan setOperationScan) {
List<ResolvedColumn> generatedColumns = setOperationScan.getColumnList();
List<ResolvedSetOperationItem> setOperationItems = setOperationScan.getInputItemList();
for (int i = 0; i < generatedColumns.size(); i++) {
int columnIndex = i;
ResolvedColumn generatedColumn = generatedColumns.get(columnIndex);
List<ResolvedColumn> parentColumns =
setOperationItems.stream()
.map(ResolvedSetOperationItem::getOutputColumnList)
.map(outputColumnList -> outputColumnList.get(columnIndex))
.collect(Collectors.toList());
addParentsToColumn(generatedColumn, parentColumns);
}
setOperationItems.stream()
.map(ResolvedSetOperationItem::getScan)
.forEach(innerScan -> innerScan.accept(this));
}