I don't like the idea of having additional method *query(Query<E> qry,
Transformer<E, R> transfomer); *because I don't see how these transformers
will work for example with SQL, but this API makes you think that
transformers are supported for all the query types.

Sergi

2016-02-04 16:46 GMT+03:00 Andrey Gura <ag...@gridgain.com>:

> Val,
>
> can we introduce new method into IgnteCache API?
>
> Now we have method: public <R> QueryCursor<R> query(Query<R> qry);
>
> New method will be something like this: <R> QueryCursor<R> query(Query<E>
> qry, Transformer<E, R> transfomer);
>
> It allows provide transformers for all query types and chnages will be
> related only with query cursor functionality.
>
> Will it work?
>
> On Thu, Feb 4, 2016 at 11:13 AM, Andrey Kornev <andrewkor...@hotmail.com>
> wrote:
>
> > Another perhaps bigger problem with running queries (including scan
> > queries) using closures was discussed at length on the @dev not so long
> > ago. It has to do with partitions migration due to cluster topology
> changes
> > which may result in the query returning incomplete result. And while it
> is
> > possible to solve this problem for the scan queries by using some clever
> > tricks, all bets are off with the SQL queries.Andrey
> >     _____________________________
> > From: Valentin Kulichenko <valentin.kuliche...@gmail.com>
> > Sent: Thursday, February 4, 2016 6:29 AM
> > Subject: Re: Transformers in SCAN queries
> > To:  <dev@ignite.apache.org>
> >
> >
> >                    Dmitry,
> >
> >  The main difference in my view is that you lose pagination when sending
> >  results from servers to client. What if one wants to iterate through all
> >  entries in cache?
> >
> >  On Wed, Feb 3, 2016 at 9:47 PM, Dmitriy Setrakyan <
> dsetrak...@apache.org>
> >  wrote:
> >
> >  > Valentin,
> >  >
> >  > Wouldn’t the same effect be achieved by broadcasting a closure to the
> >  > cluster and executing scan-query on every node locally?
> >  >
> >  > D.
> >  >
> >  > On Wed, Feb 3, 2016 at 9:17 PM, Valentin Kulichenko <
> >  > valentin.kuliche...@gmail.com> wrote:
> >  >
> >  > > Igniters,
> >  > >
> >  > > I keep getting requests from our users to add optional transformers
> to
> >  > SCAN
> >  > > queries. This will allow to iterate through cache, but do not
> transfer
> >  > > whole key-value pairs across networks (e.g., get only keys). The
> > feature
> >  > > looks useful and I created a ticket [1].
> >  > >
> >  > > I am struggling with the design now. The problem is that I wanted to
> >  > extend
> >  > > existing ScanQuery object for this, but this seems to be impossible
> >  > because
> >  > > it already extends Query<Cache.Entry<K, V>> and thus can iterate
> only
> >  > > through entries.
> >  > >
> >  > > The only option I see now is to create a separate query type,
> > copy-paste
> >  > > everything from ScanQuery and add *mandatory* transformer. Something
> > like
> >  > > this:
> >  > >
> >  > > ScanTransformQuery<K, V, R> extends Query<R> {
> >  > >     IgniteBiPredicate<K, V> filter;
> >  > >     IgniteClosure<Cache.Entry<K, V>, R> transformer;
> >  > >     int part;
> >  > >     ...
> >  > > }
> >  > >
> >  > > Thoughts? Does anyone has other ideas?
> >  > >
> >  > > [1]    https://issues.apache.org/jira/browse/IGNITE-2546
> >  > >
> >  > > -Val
> >  > >
> >  >
> >
> >
> >
> >
> >
>
>
>
> --
> Andrey Gura
> GridGain Systems, Inc.
> www.gridgain.com
>

Reply via email to