public List<Function> getFunctions(String catName) throws MetaException {
    List<Long> funcIds = getFunctionIds(catName);
    if (funcIds.isEmpty()) {
      return Collections.emptyList(); // no functions, bail early.
    }
    // Get full objects. For Oracle/etc. do it in batches.
    return Batchable.runBatched(batchSize, funcIds, new Batchable<Long, Function>() {
      @Override
      public List<Function> run(List<Long> input) throws MetaException {
        return getFunctionsFromFunctionIds(input, catName);
      }
    });
  }
Checks if the column descriptors still has references for other SD-s. If not, then removes
them. Should be called with the list short enough to not trip up Oracle/etc.
@param columnDescriptorIdList The column identifiers
@throws MetaException If there is an SQL exception during the execution it converted to
MetaException
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java