GemFire 8.2.x 函数中的 QueryService return 空值

QueryService in GemFire 8.2.x Function return null values

我已经为 select 分区区域个人数据创建了函数。当我尝试在客户端执行函数时得到空值。

输出
[[], 空]

public class MySelectPartitionFunction extends FunctionAdapter implements Declarable{

    private static final long serialVersionUID = 1L;

    @Override
    public void execute(FunctionContext context) {
         Cache cache = CacheFactory.getAnyInstance();
          QueryService queryService = cache.getQueryService();

          String qstr = (String) context.getArguments();

          try {
            Query query = queryService.newQuery(qstr);
           RegionFunctionContext rContext = (RegionFunctionContext)context;
            SelectResults results = (SelectResults) query.execute(rContext);
            context.getResultSender().sendResult((ArrayList) (results).asList());
            context.getResultSender().lastResult(null);
          } catch (Exception e) {
            throw new FunctionException(e);
          }
        }

    @Override
    public String getId() {
    return getClass().getName();
    }

    @Override
    public boolean hasResult() {
      return true;
    }

    @Override
    public boolean isHA() {
      return false;
    }

    public void init(Properties arg0) {
    }

}


public class TestFunctionQuery {
    public static void main(String[] args) {

        ResultCollector rcollector = null;
        ClientCache cache;
        Region<?, ?> individual;

        cache = new ClientCacheFactory().set("name", "ClientWorker").set("cache-xml-file", "xml/clientCache.xml")
                .create();
        individual = cache.getRegion("Individual");
        String qStr = "SELECT * FROM /Individual";

        try {
          Set keyFilter = new HashSet();
            keyFilter.add(1);

          rcollector = FunctionService
              .onRegion(individual)
              .withArgs(qStr)
              .withFilter(keyFilter)
              .execute("com.xxx.logic.MySelectPartitionFunction");

          Object result = rcollector.getResult();
          ArrayList resultList = (ArrayList)result;
          List queryResults = new ArrayList();
          if (resultList.size()!=0) {
            for (Object obj: resultList) {
              if (obj != null) {
                queryResults.addAll((ArrayList)obj);
              }
            }
          }
          System.out.println((queryResults));

        } catch (FunctionException ex) {
            System.out.println("Exception");
        }
      }

}

gfsh>describe region --name=Individual
..........................................................
Name            : Individual
Data Policy     : partition
Hosting Members : server2
server1


Non-Default Attributes Shared By Hosting Members

  Type    |       Name       | Value
--------- | ---------------- | -----
Region    | size             | 3
Partition | redundant-copies | 1

我在更改函数和客户端代码后能够检索记录

@Override
public void execute(FunctionContext context) {
    Cache cache = CacheFactory.getAnyInstance();
    QueryService queryService = cache.getQueryService();

      String qstr = (String) context.getArguments();

      try {
           Query query = queryService.newQuery(qstr);
            SelectResults<?> result = (SelectResults<?>) query.execute((RegionFunctionContext) context);
            ArrayList<?> arrayResult = (ArrayList<?>) result.asList();
            context.getResultSender().sendResult(arrayResult);
            context.getResultSender().lastResult(null);
        } catch (Exception e) {
        throw new FunctionException(e);
      }

}

ClientCache cache;
    Region<?, ?> individual;

    cache = new ClientCacheFactory().set("name", "ClientWorker").set("cache-xml-file", "xml/clientCache.xml")
            .create();
    individual = cache.getRegion("Individual");


    String qStr = "SELECT  r1.id,r1.firstName, r1.lastName FROM /Individual r1";

    try {

        Object result = FunctionService.onRegion(individual)
                 .withArgs(qStr).execute("com.xxx.logic.MySelectPartitionFunction").getResult();

输出 [[struct(id:2,firstName:Basha,lastName:Shaik), struct(id:1,firstName:Krish,lastName:Chaitu), struct(id:5,firstName:Vigneshwaran,lastName:Ganesan)], 空, [struct(id:4,firstName:Arun,lastName:Kishore), struct(id:3,firstName:Anurag,lastName:Kshirsagar)],null]