В чем разница между ConverterRule и RelOptRule от Calcite? - PullRequest
0 голосов
/ 21 мая 2019

Я изучаю Calcite, но меня запутали ConverterRule и RelOptRule.

Я уже понял, что RelOptRule - это правило для преобразования выражения в другое, а RelOptRule используется RelOptPlanner.

Но я видел это в java-документе ConverterRule

/**
 * Abstract base class for a rule which converts from one calling convention to
 * another without changing semantics.
 */

В чем разница между ConverterRule и RelOptRule?И как мне их использовать?

1 Ответ

1 голос
/ 21 мая 2019

ConverterRule является подклассом класса RelOptRule.Оба эти правила используются планировщиком для преобразования выражений реляционной алгебры.ConverterRule делает то, что указано в Javadoc, который вы указали, он конвертирует между соглашениями о вызовах.Это используется, например, для того, чтобы позволить логическим выражениям быть фактически выполненными путем назначения конкретного соглашения о вызовах, которое указывает, какая система будет фактически выполнять запрос.

Правила могут делать много других вещей, помимо соглашений преобразования.Например, правило может принять решение об обмене порядка Filter и Project узлов.На самом деле все, что делает правило, это сопоставляет поддерево выражения реляционной алгебры и заменяет его другим поддеревом.

...