Thanks, Michael. I was distracted by other stuffs. Will send a PR soon.

On Tue, Aug 23, 2016 at 2:32 PM, Michael Mior <[email protected]> wrote:

> Shuyi,
>
> Just wanted to check in and see how things were going in terms of putting
> together a PR with this. Let me know if there's any way I can help!
>
> Cheers,
> --
> Michael Mior
> [email protected]
>
> 2016-08-04 3:33 GMT-04:00 Shuyi Chen <[email protected]>:
>
> > Thanks a lot, Michael and Jordan. I got it working with the suggestion.
> > I'll send a pull request later for you guys to help review.
> >
> > Also, I got another question. When I run a PrepareStatement in calcite, I
> > also want to push down part of the PrepareStatement in CQL to cassandra.
> > For example,
> >
> > Assuming the cassandra table contains field: a, b, c, and a is the only
> > primary key.
> >
> > calcite PrepareStatement is:  select a, b, c from table1 where a = ? and
> b
> > < ?;
> >
> > I want to push down CQL PrepareStatement: select a, b, c from table1
> where
> > a = ? to cassandra, and store the cassandra PrepareStatement inside the
> > calcite PrepareStatement.
> >
> > And when we bind the data to execute the calcite PrepareStatement, I need
> > to be able to retrieve the stored cassandra PrepareStatement and bind the
> > data for it to execute the cassandra query.
> >
> > I would love to get some advice on how to implement this. Thanks a lot.
> >
> >
> >
> >
> > On Wed, Aug 3, 2016 at 1:22 PM, [email protected] <
> > [email protected]> wrote:
> >
> > > Sure, I'm no Cassandra expert and obviously the implementation needs to
> > > handle whatever actually can be pushed down to C*. One should not
> follow
> > my
> > > advice precisely. The methods that are required to determine whether a
> > > predicate is supported are already present in CassandraFilterRule. I
> was
> > > just commenting on how one would go about splitting a filter based on
> > what
> > > is supported/not supported. So, replace "equality predicate" with
> > "whatever
> > > Cassandra supports" and use the existing isEqualityOnKey method.
> > >
> > > > On Aug 3, 2016, at 11:44 AM, Michael Mior <[email protected]>
> wrote:
> > > >
> > > > It's more complicated than that. For equality predicates, it's a
> matter
> > > of
> > > > splitting out equality predicates involving a field and a literal.
> > > > Cassandra can't handle predicates involving expressions or equality
> > > between
> > > > fields. Cassandra can also handle some range predicates if the
> > partition
> > > > key is already restricted by an equality predicate and the range
> > > predicate
> > > > is part o the clustering key.
> > > >
> > > > Cheers,
> > > > --
> > > > Michael Mior
> > > > [email protected]
> > > >
> > > > 2016-08-03 14:21 GMT-04:00 [email protected] <
> > > > [email protected]>:
> > > >
> > > >> It's just a matter of splitting out equality predicates. What I
> would
> > do
> > > >> is create a Filter rule that splits the filter based on whether a
> > > predicate
> > > >> is an equality. If the Filter is split, the rule returns a Filter
> with
> > > the
> > > >> equality predicates as inputs to the non-equality predicates. That
> > > should
> > > >> allow the CassandraFilterRule to convert the Filter with equality
> > > >> predicates and for the rest of the predicates above to be
> implemented
> > in
> > > >> Enumerable convention.
> > > >>
> > > >> You can look at the rules in core for some examples of splitting
> > > >> expressions. Just ensure equality predicates are pushed down or you
> > can
> > > >> implement a rule for pushing them down past other filters.
> > > >>
> > > >>> On Aug 3, 2016, at 10:57 AM, Shuyi Chen <[email protected]>
> wrote:
> > > >>>
> > > >>> Hi,
> > > >>>
> > > >>> I am working on improving the cassandra adapter. Right now, I found
> > > that
> > > >> if
> > > >>> my filter contains non-primary keys, calcite will just reject the
> > > filter
> > > >>> and just execute a no-filter cql query  which is bad. I am
> wondering
> > > how
> > > >> I
> > > >>> can split the filter into cassandra supported part and
> > > >>> cassandra-non-supported part, and push down the cassandra supported
> > > part
> > > >> to
> > > >>> cql. Below is an example.
> > > >>>
> > > >>> Assuming the cassandra table contains field: a, b, c, and a is the
> > only
> > > >>> primary key.
> > > >>>
> > > >>> calcite sql is:  select a, b, c from table1 where a = 'xxx' and b <
> > > 3223;
> > > >>>
> > > >>> I want to push down cql: select a, b, c from table1 where a = 'xxx'
> > to
> > > >>> cassandra,
> > > >>>
> > > >>> But right now, the cassandra adapter will only push down: select a,
> > b,
> > > c
> > > >>> from table1, which is bad for cassandra.
> > > >>>
> > > >>> Thanks a lot.
> > > >>> Shuyi
> > > >>>
> > > >>> --
> > > >>> "So you have to trust that the dots will somehow connect in your
> > > future."
> > > >>
> > >
> >
> >
> >
> > --
> > "So you have to trust that the dots will somehow connect in your future."
> >
>



-- 
"So you have to trust that the dots will somehow connect in your future."

Reply via email to