Calcite: можем ли мы переписать оптимизированный RelNode?

В Calcite, после оптимизации, предоставленной VolcanoPlanner по умолчанию, мы можем получить оптимизированный RelNode, но можем ли мы провести дальнейшую оптимизацию? Например, я хочу добавить ElasticsearchSort или что-то в этом роде, чтобы ограничить набор данных, с которым мы работаем.

Кто-то предлагает определить RelOptRule, но поскольку VolcanoPlanner обрабатывает оптимизацию dynamic programming способом, не уверен, что правило можно применять в правильном порядке. Любые идеи?


person jerryleooo    schedule 05.03.2020    source источник
comment
Можете ли вы объяснить свое беспокойство по поводу порядка применения правил VolcanoPlanner? Пользовательское RelOptRule может определить, соответствует ли оно конкретному подграфу плана запроса, чего, по моему опыту, часто бывает достаточно.   -  person Mzzzzzz    schedule 14.03.2020
comment
Что я хочу добавить в SQL, так это предложение LIMIT, я думаю, мне нужно добавить его на последнем шаге, так как если добавить его на промежуточных шагах, план запроса может быть неверным.   -  person jerryleooo    schedule 16.03.2020


Ответы (1)


Вам не обязательно использовать VolcanoPlanner. Есть также HepPlanner, который просто применяет правила, которые вы даете ему как HepProgram.

person Michael Mior    schedule 06.03.2020