private TVFInfo buildTVF()

in zetasql-toolkit-bigquery/src/main/java/com/google/zetasql/toolkit/catalog/bigquery/BigQueryAPIResourceProvider.java [449:476]


  private TVFInfo buildTVF(Routine routine) {
    assert routine.getRoutineType().equals(BigQueryAPIRoutineType.TVF.getLabel());

    RoutineId routineId = routine.getRoutineId();
    BigQueryReference bigQueryReference = BigQueryReference.from(routineId);

    Optional<TVFRelation> maybeOutputSchema =
        routine.getReturnTableType() != null
            ? Optional.of(this.parseTVFOutputSchema(routine.getReturnTableType()))
            : Optional.empty();

    List<FunctionArgumentType> arguments = this.parseRoutineArguments(routine.getArguments());

    FunctionArgumentType returnType =
        new FunctionArgumentType(
            SignatureArgumentKind.ARG_TYPE_RELATION,
            FunctionArgumentTypeOptions.builder().build(),
            1);

    FunctionSignature signature = new FunctionSignature(returnType, arguments, -1);

    return TVFInfo.newBuilder()
        .setNamePath(bigQueryReference.getNamePath())
        .setSignature(signature)
        .setOutputSchema(maybeOutputSchema)
        .setBody(Optional.ofNullable(routine.getBody()))
        .build();
  }