public void expandMakeStruct()

in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/tools/lineage/ParentColumnFinder.java [205:226]


  public void expandMakeStruct(ResolvedColumn targetColumn, ResolvedMakeStruct makeStruct) {
    StructType structType = makeStruct.getType().asStruct();
    int numberOfFields = structType.getFieldCount();

    for (int i = 0; i < numberOfFields; i++) {
      String fieldName = structType.getField(i).getName();
      ResolvedExpr fieldExpression = makeStruct.getFieldList().get(i);
      ResolvedColumn fieldColumn =
          buildColumnSubfield(targetColumn, fieldName, fieldExpression.getType());

      columnsBeingComputed.push(fieldColumn);
      List<ResolvedColumn> expressionParents =
          ExpressionParentFinder.findDirectParentsForExpression(fieldExpression);
      columnsBeingComputed.forEach(
          columnBeingComputed -> addParentsToColumn(columnBeingComputed, expressionParents));
      columnsBeingComputed.pop();

      if (fieldExpression instanceof ResolvedMakeStruct) {
        expandMakeStruct(fieldColumn, (ResolvedMakeStruct) fieldExpression);
      }
    }
  }