private <T> T doFetchProperties(String key, java.util.function.Function<MMetastoreDBProperties, T> transform) {
    try(QueryWrapper query = new QueryWrapper(pm.newQuery(MMetastoreDBProperties.class, PTYARG_EQ_KEY))) {
      query.declareParameters(PTYPARAM_STR_KEY);
      query.setUnique(true);
      MMetastoreDBProperties properties = (MMetastoreDBProperties) query.execute(key);
      if (properties != null) {
        return (T) (transform != null? transform.apply(properties) : properties);
      }
    }
    return null;
  }
Called right before an action that would drop a storage descriptor.
This function makes the SD's reference to a CD null, and then deletes the CD
if it no longer is referenced in the table.
@param msd the storage descriptor to drop
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java