@Override
  public TAuthorizerResp queryRPermission(final TAuthorizerRelationalReq req) {
    if (req.getAuthorType() < 0 || req.getAuthorType() >= AuthorRType.values().length) {
      throw new IndexOutOfBoundsException("Invalid Author Type ordinal");
    }
    final PermissionInfoResp dataSet =
        (PermissionInfoResp)
            configManager.queryPermission(
                new AuthorRelationalPlan(
                    ConfigPhysicalPlanType.values()[
                        req.getAuthorType() + ConfigPhysicalPlanType.RCreateUser.ordinal()],
                    req.getUserName(),
                    req.getRoleName(),
                    req.getDatabase(),
                    req.getTable(),
                    req.getPermissions(),
                    req.isGrantOpt(),
                    req.getPassword()));
    final TAuthorizerResp resp = new TAuthorizerResp(dataSet.getStatus());
    resp.setMemberInfo(dataSet.getMemberList());
    resp.setPermissionInfo(dataSet.getPermissionInfoResp());
    resp.setTag(dataSet.getTag());
    return resp;
  }
ConfigNodeRPCServer exposes the interface that interacts with the DataNode
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java