public static void createProcedureInCatalog()

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