in zetasql-toolkit-core/src/main/java/com/google/zetasql/toolkit/catalog/CatalogOperations.java [365:396]
public static void createProcedureInCatalog(
SimpleCatalog catalog,
String nameInCatalog,
ProcedureInfo procedureInfo,
CreateMode createMode) {
boolean alreadyExists = procedureExists(catalog, nameInCatalog);
Runnable creatorFunction =
() -> {
Procedure procedure =
new Procedure(ImmutableList.of(nameInCatalog), procedureInfo.getSignature());
catalog.addProcedure(procedure);
if (nameInCatalog.contains(".")) {
List<String> nameComponents = Arrays.asList(nameInCatalog.split("\\."));
String nestedName = nameComponents.get(nameComponents.size() - 1);
SimpleCatalog nestedCatalog = getSubCatalogForResource(catalog, nameComponents);
Procedure nestedProcedure =
new Procedure(ImmutableList.of(nestedName), procedureInfo.getSignature());
nestedCatalog.addProcedure(nestedProcedure);
}
};
createResource(
nameInCatalog,
createMode,
"Procedure",
alreadyExists,
/*creator=*/ creatorFunction,
/*deleter=*/ () -> deleteProcedureFromCatalog(catalog, nameInCatalog));
}