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

Joel Bernstein edited comment on SOLR-16243 at 6/9/22 5:40 PM:
---------------------------------------------------------------

[~krisden] the PR is now working so you can how it shaped up. You'll see most 
of the work is simply moving the logic for building the Streaming Expression 
from the SolrTable to the SolrTableScan. The Streaming Expression string is 
then passed to the SolrTable to execute so the SolrTable has very little code 
in it now.

Here is the description from the PR with more details:

This PR is a refactoring of Solr SQL (no new features) to compile the streaming 
expression directly from the Calcite logical plan tree. This replaces the old 
approach which traversed the logical plan tree and gathered information into a 
flattened structure which was passed to the SolrTable which built the streaming 
expression. The old approach worked fine to represent a SQL query which mapped 
to a single Solr query, but would not work well for representing SQL joins 
which map to two Solr queries (left and right side of the join).

The new approach directly translates from one DAG (Calcite logical plan) to 
another DAG (streaming expression) so it can support more complex queries like 
joins in the future.


was (Author: joel.bernstein):
[~krisden] the PR is now working so you can how it shaped up. You'll see most 
of the work is simply moving the logic for building the Streaming Expression 
from the SolrTable to the SolrTableScan. The Streaming Expression string is 
then passed to the SolrTable to execute so the SolrTable has very little code 
in it now.

Here is the description from the PR with more details:

_emphasized text_
This PR is a refactoring of Solr SQL (no new features) to compile the streaming 
expression directly from the Calcite logical plan tree. This replaces the old 
approach which traversed the logical plan tree and gathered information into a 
flattened structure which was passed to the SolrTable which built the streaming 
expression. The old approach worked fine to represent a SQL query which mapped 
to a single Solr query, but would not work well for representing SQL joins 
which map to two Solr queries (left and right side of the join).

The new approach directly translates from one DAG (Calcite logical plan) to 
another DAG (streaming expression) so it can support more complex queries like 
joins in the future.

> Compile SQL to a Streaming Expression while visiting the Calcite SQL parse 
> tree
> -------------------------------------------------------------------------------
>
>                 Key: SOLR-16243
>                 URL: https://issues.apache.org/jira/browse/SOLR-16243
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: Parallel SQL
>            Reporter: Joel Bernstein
>            Assignee: Joel Bernstein
>            Priority: Major
>              Labels: RobustSQL
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently Solr SQL visits the SQL parse tree and builds up a set of 
> properties that are passed to the SolrTable which creates the Streaming 
> Expression object tree. This technique only works because we're not dealing 
> yet with joins. It won't be practical to express joins using the current 
> approach. In order to support joins we'll need to build the Streaming 
> Expression as we visit the parse tree and pass the expression directly to the 
> SolrTable. 
> This ticket will only implement existing SQL support using the direct 
> compilation approach.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to