Uploaded image for project: 'Hot Rod Native client'
  1. Hot Rod Native client
  2. HRCPP-414

Continuous query does not allow for parameterized queries

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • None
    • 8.1.1.Final
    • .NET
    • None

      The ContinuousQueryListener accepts only a query string and not the QueryRequest object which can have some parameters specified. Example:

      param.Name = "surnameParam";
      WrappedMessage wm = new WrappedMessage();
      wm.WrappedString = "Doe";
      param.Value = wm;
      QueryRequest qr = new QueryRequest();
      qr.QueryString = "from sample_bank_account.User u where u.surname = :surnameParam)";
      qr.NamedParameters.Add(param);
      ... = new Event.ContinuousQueryListener<int, User>(qr.QueryString); // <<----only string here
      

      When I later change the query by passing a different value for this parameter it will not be reflected in the continuous query.

      Passing just the query string results in the following error on server side:

       ERROR [org.infinispan.server.hotrod.CacheDecodeContext] (HotRod-ServerWorker-5-1) ISPN005003: Exception reported: java.lang.IllegalStateException: Missing value for parameter ageParam
      4:      at org.infinispan.objectfilter.impl.syntax.ConstantValueExpr.getConstantValueAs(ConstantValueExpr.java:79)
      4:      at org.infinispan.objectfilter.impl.predicateindex.be.BETreeMaker.makePredicateNode(BETreeMaker.java:87)
      4:      at org.infinispan.objectfilter.impl.predicateindex.be.BETreeMaker.preorderTraversal(BETreeMaker.java:69)
      4:      at org.infinispan.objectfilter.impl.predicateindex.be.BETreeMaker.make(BETreeMaker.java:53)
      4:      at org.infinispan.objectfilter.impl.FilterRegistry.addFilter(FilterRegistry.java:98)
      4:      at org.infinispan.objectfilter.impl.BaseMatcher.registerFilter(BaseMatcher.java:206)
      4:      at org.infinispan.query.dsl.embedded.impl.BaseJPAFilterIndexingServiceProvider.registerListenerInvocations(BaseJPAFilterIndexingServiceProvider.java:100)
      4:      at org.infinispan.notifications.cachelistener.CacheNotifierImpl$DelegatingCacheInvocationBuilder.registerListenerInvocations(CacheNotifierImpl.java:1370)
      4:      at org.infinispan.notifications.cachelistener.CacheNotifierImpl.addFilteredListener(CacheNotifierImpl.java:1061)
      4:      at org.infinispan.cache.impl.CacheImpl.addFilteredListener(CacheImpl.java:722)
      4:      at org.infinispan.cache.impl.AbstractDelegatingCache.addFilteredListener(AbstractDelegatingCache.java:462)
      4:      at org.infinispan.cache.impl.AbstractDelegatingCache.addFilteredListener(AbstractDelegatingCache.java:462)
      4:      at org.infinispan.cache.impl.AbstractDelegatingCache.addFilteredListener(AbstractDelegatingCache.java:462)
      4:      at org.infinispan.server.hotrod.ClientListenerRegistry.addCacheListener(ClientListenerRegistry.java:207)
      4:      at org.infinispan.server.hotrod.ClientListenerRegistry.addClientListener(ClientListenerRegistry.java:182)
      4:      at org.infinispan.server.hotrod.ContextHandler.realRead(ContextHandler.java:154)
      4:      at org.infinispan.server.hotrod.ContextHandler.lambda$channelRead0$1(ContextHandler.java:57)
      4:      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      4:      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      4:      at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
      4:      at java.lang.Thread.run(Thread.java:745)
      
      

      A test coming soon.

              vrigamon@redhat.com Vittorio Rigamonti
              mgencur Martin Gencur
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: