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