@Override
  public TSStatus checkUserTBPrivilegesGrantOpt(
      String username, String database, String table, PrivilegeType permission) {
    checkCacheAvailable();
    return checkPrivilege(
        username,
        new PrivilegeUnion(database, table, permission, true),
        (role, union) ->
            role.checkTablePrivilegeGrantOption(
                union.getDBName(), union.getTbName(), union.getPrivilegeType()),
        new TCheckUserPrivilegesReq(
                username, PrivilegeModelType.RELATIONAL.ordinal(), permission.ordinal(), true)
            .setDatabase(database)
            .setTable(table));
  }
-- check user privileges SYSTEM, TREE, RELATIONAL-- *
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/ClusterAuthorityFetcher.java