簡體   English   中英

GemFire 8.2.x中的QueryService函數返回空值

[英]QueryService in GemFire 8.2.x Function return null values

我創建了從分區區域“個人”中選擇數據的功能。 當我嘗試在客戶端執行函數時,會得到null。

產量
[[], 空值]

公共類MySelectPartitionFunction擴展了FunctionAdapter實現的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)],null ,[struct(id:4,firstName:Arun,lastName:Kishore),struct(id:3,firstName:Anurag,lastName:Kshirsagar)],null]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM