I agree, BindableTableScan.computeSelfCost should take projects and filters 
into account. Can you log a JIRA case for that.

Be aware that ProjectableFilterableTable is an “80:20” thing — easy, good 
enough for simple cases, but maybe not expressive enough for hard cases. 
TranslatableTable is probably better for the harder cases; don’t avoid it just 
because (being the path less traveled) it has a few bugs.

Julian


> On Aug 28, 2017, at 8:02 AM, Luis Fernando Kauer 
> <[email protected]> wrote:
> 
> At first I was using TranslatableTable for my adapters (read files in 
> different formats), but I realized that many rules apply only to 
> ProjectableFilterableTable, so I started using it to take advantage of all 
> these builtin rules.
> Restricting the projects that need to be scanned is very important because it 
> can reduce a lot the time to scan the table.
> 
> Unfortunately I'm having trouble making Calcite select a plan that pushes the 
> used projects to the table scan in simple queries that have a filter.  The 
> plan selected has only the filters and no projects.
> What seems to be happening is that BindableFilterRule and BindableProjectRule 
> are applied generating different plans, some with only the filter, some with 
> only the projects and some with both.
> The planner has to decide which one to choose, but 
> BindableTableScan.computeSelfCost just multiplies the cost by 0.01, without 
> taking into account the restriction of projects or the existence of filters.
> Since the different plans with and without the projects and filters end up 
> with the same cost, the planner chooses the first plan, which in my case has 
> been a BindableTableScan with only the filters, generated by the 
> BindableFilterRule.
> The query is something like:
> select c1, c2 from t where c3=10
> 
> Changing BindableTableScan.computeSelfCost to calculate different costs 
> according to projects and filters made the planner choose it right, but it 
> would be nice to allow each adapter/table to define its own costs, since 
> projects and filters can have different costs.

Reply via email to