public void dropTableByMeta(TableMeta tableMeta, boolean purge) {
    dropInternalTableByMeta(tableMeta, purge);
    if (!HiveTableUtil.checkExist(
        hiveClientPool, TableIdentifier.of(tableMeta.getTableIdentifier()))) {
      // If hive table does not exist, we will not try to drop hive table
      return;
    }
    // Drop hive table operation will only delete hive table metadata
    // Delete data files operation will use MixedHiveCatalog
    if (purge) {
      try {
        hiveClientPool.run(
            client -> {
              client.dropTable(
                  tableMeta.getTableIdentifier().getDatabase(),
                  tableMeta.getTableIdentifier().getTableName(),
                  false /* deleteData */,
                  true /* ignoreUnknownTab */);
              return null;
            });
      } catch (TException | InterruptedException e) {
        throw new RuntimeException("Failed to drop table:" + tableMeta.getTableIdentifier(), e);
      }
    } else {
      // If purge is not true, we will not drop the hive table and need to remove the mixed-hive
      // table
      // flag
      try {
        hiveClientPool.run(
            client -> {
              org.apache.hadoop.hive.metastore.api.Table hiveTable =
                  client.getTable(
                      tableMeta.getTableIdentifier().getDatabase(),
                      tableMeta.getTableIdentifier().getTableName());
              Map<String, String> hiveParameters = hiveTable.getParameters();
              hiveParameters.remove(HiveTableProperties.MIXED_TABLE_FLAG);
              client.alterTable(
                  tableMeta.getTableIdentifier().getDatabase(),
                  tableMeta.tableIdentifier.getTableName(),
                  hiveTable);
              return null;
            });
      } catch (TException | InterruptedException e) {
        throw new RuntimeException(
            "Failed to alter hive table while drop table meta:" + tableMeta.getTableIdentifier(),
            e);
      }
    }
  }
we check the privilege by calling existing method, the method will throw the
UncheckedIOException Exception
amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/catalog/MixedHiveTables.java