[ 
https://issues.apache.org/jira/browse/SOLR-8593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15709176#comment-15709176
 ] 

Joel Bernstein edited comment on SOLR-8593 at 11/30/16 5:34 PM:
----------------------------------------------------------------

One of things that is also not specifically handled is the HAVING clause. 

I think we should push down this capability to Solr as well so we can perform 
the HAVING logic on the worker nodes. In high cardinality use cases this will 
be a big performance improvement.

We also need to develop a HavingStream to manage the having logic. I'll start 
the work for the HavingStream in this branch as it directly supports the 
Calcite integration.

My plan is to implement the following classes for the having logic:

HavingStream  
BooleanOperation
AndOperation
OrOperation
NotOperation
EqualsOperation
LessThenOperation
GreaterThenOperation

Syntax:

having(streamExpr, and(eq(fieldName, value))

The having function will read the Tuples from the streamExpr and apply the 
boolean operation to each Tuple.

If the boolean operation returns true the having stream will emit the Tuple.





was (Author: joel.bernstein):
One of things that is also not specifically handled is the HAVING clause. 

I think we should push down this capability to Solr as well so we can perform 
the HAVING logic on the worker nodes. In high cardinality use cases this will 
be a big performance improvement.

We also need to develop a HavingStream to manage the having logic. I'll start 
the work for the HavingStream in this branch as it directly supports the 
Calcite integration.

My plan is to implement the following classes for the having logic:

HavingStream  
BooleanOperation
AndOperation
OrOperation
NotOperation
EqualsOperation
LessThenOperation
GreaterThenOperation

Syntax:

having(streamExpr, and(equals(fieldName, value))

The having function will read the Tuples from the streamExpr and apply the 
boolean operation to each Tuple.

If the boolean operation returns true the having stream will emit the Tuple.




> Integrate Apache Calcite into the SQLHandler
> --------------------------------------------
>
>                 Key: SOLR-8593
>                 URL: https://issues.apache.org/jira/browse/SOLR-8593
>             Project: Solr
>          Issue Type: Improvement
>            Reporter: Joel Bernstein
>            Assignee: Joel Bernstein
>         Attachments: SOLR-8593.patch
>
>
>    The Presto SQL Parser was perfect for phase one of the SQLHandler. It was 
> nicely split off from the larger Presto project and it did everything that 
> was needed for the initial implementation.
> Phase two of the SQL work though will require an optimizer. Here is where 
> Apache Calcite comes into play. It has a battle tested cost based optimizer 
> and has been integrated into Apache Drill and Hive.
> This work can begin in trunk following the 6.0 release. The final query plans 
> will continue to be translated to Streaming API objects (TupleStreams), so 
> continued work on the JDBC driver should plug in nicely with the Calcite work.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to