[
https://issues.apache.org/jira/browse/DRILL-5202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15828849#comment-15828849
]
Julian Hyde commented on DRILL-5202:
------------------------------------
Wouldn't the logical planner usually have pushed project and filter through
sort?
> Planner misses opportunity to link sort & filter without remover
> ----------------------------------------------------------------
>
> Key: DRILL-5202
> URL: https://issues.apache.org/jira/browse/DRILL-5202
> Project: Apache Drill
> Issue Type: Bug
> Affects Versions: 1.9.0
> Reporter: Paul Rogers
> Priority: Minor
>
> Consider the following query:
> {code}
> SELECT * FROM (SELECT * FROM `mock`.`mock.json` ORDER BY col1) d WHERE d.col1
> = 'bogus'
> {code}
> The data source here is a mock: it simply generates a data set with 10
> columns numbered col1 to col10. Then it generates 10,000 rows of data.
> The plan for this query misses an optimization opportunity. (See plan below.)
> The current plan is (abbreviated):
> * scan
> * ...
> * sort
> * selection vector remover
> * project
> * filter
> * selection vector remover
> * project
> * screen
> Careful inspection shows that this query is very simple. The following steps
> would work just as well:
> * scan
> * ...
> * sort
> * filter
> * project
> * screen
> That is, the filter can handle an input with a selection vector. So, no SVR
> is needed between the sort and the filter. Plus, this is a {{SELECT *}}
> query, so all the extra projects don't really do anything useful, so they can
> be removed where unneeded. The revised plan eliminates an unnecessary data
> copy.
> Of course, the planner should have pushed the filter below the sort. But that
> is DRILL-5200.
> {code}
> "graph" : [ {
> "pop" : "mock-scan",
> "@id" : 8,
> ...
> }, {
> "pop" : "project",
> "@id" : 7,
> "exprs" : [ {
> "ref" : "`T0¦¦*`",
> "expr" : "`*`"
> }, {
> "ref" : "`col1`",
> "expr" : "`col1`"
> } ],
> "child" : 8,
> ...
> }, {
> "pop" : "external-sort",
> "@id" : 6,
> "child" : 7,
> "orderings" : [ {
> "order" : "ASC",
> "expr" : "`col1`",
> "nullDirection" : "UNSPECIFIED"
> } ],
> ...
> }, {
> "pop" : "selection-vector-remover",
> "@id" : 5,
> "child" : 6,
> ...
> }, {
> "pop" : "project",
> "@id" : 4,
> "exprs" : [ {
> "ref" : "`T0¦¦*`",
> "expr" : "`T0¦¦*`"
> } ],
> "child" : 5,
> ...
> }, {
> "pop" : "filter",
> "@id" : 3,
> "child" : 4,
> ...
> }, {
> "pop" : "selection-vector-remover",
> "@id" : 2,
> ...
> }, {
> "pop" : "project",
> "@id" : 1,
> "exprs" : [ {
> "ref" : "`*`",
> "expr" : "`T0¦¦*`"
> } ],
> "child" : 2,
> ...
> }, {
> "pop" : "screen",
> "@id" : 0,
> ...
> } ]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)