[
https://issues.apache.org/jira/browse/CALCITE-1876?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16085646#comment-16085646
]
Luis Fernando Kauer commented on CALCITE-1876:
----------------------------------------------
The CSV adapter uses TranslatableTable and Calcite's built in rules don't
simplify this kind of aggregate query.
However, I noticed that you mention to use ProjectableFilterableTable instead
of TranslatableTable.
After implementing ProjectableFilterableTable in CSV adapter this aggregate
query was simplified as expected with Calcite's built in rules, with no need to
create a new rule.
So I wonder if a new rule should be created for CSV Adapter or if CSV Adapter
should just implement ProjectableFilterableTable and take advantage of all the
rules already implemented.
> Create a rule to push the projections used in aggregate functions
> -----------------------------------------------------------------
>
> Key: CALCITE-1876
> URL: https://issues.apache.org/jira/browse/CALCITE-1876
> Project: Calcite
> Issue Type: Improvement
> Components: csv-adapter
> Reporter: Luis Fernando Kauer
> Assignee: Julian Hyde
> Priority: Minor
>
> From Julian Hyde;
> "Calcite should realize that Aggregate has an implied Project (because it
> only uses a few columns) and push that projection into the CsvTableScan, but
> it doesn’t."
> A query scans only the used projection when no aggregation is used:
> sql->explain plan for select name from emps;
> CsvTableScan(table=[[SALES, EMPS]], fields=[[1]])
> But it scans all the projections when an aggregation is used:
> sql->explain plan for select max(name) from emps;
> EnumerableAggregate(group=[{}], EXPR$0=[MAX($1)])
> CsvTableScan(table=[[SALES, EMPS]], fields=[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)