Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
Calcite has defined various metadata handlers(e.g. RowCoun, Selectivity and provided default implementation(e.g. RelMdRowCount, RelMdSelectivity). However, the default implementation can't completely meet our requirements, e.g. some of its logic is incompleteļ¼and some RelNodes are not considered.
There are two options to meet our requirements:
option 1. Extends from default implementation, overrides method to improve its logic, add new methods for new RelNode. The advantage of this option is we just need to focus on the additions and modifications. However, its shortcomings are also obvious: we have no control over the code of non-override methods in default implementation classes especially when upgrading the Calcite version.
option 2. Extends from metadata handler interfaces, reimplement all the logic. Its shortcomings are very obvious, however we can control all the code logic that's what we want.
so we choose option 2!
In this jira, all Flink metadata handles will be introduced,
including calcite builtin metadata handlers:
FlinkRelMdPercentageOriginalRow,
FlinkRelMdNonCumulativeCost,
FlinkRelMdCumulativeCost,
FlinkRelMdRowCount,
FlinkRelMdSize,
FlinkRelMdSelectivity,
FlinkRelMdDistinctRowCoun,
FlinkRelMdPopulationSize,
FlinkRelMdColumnUniqueness,
FlinkRelMdUniqueKeys,
FlinkRelMdDistribution,
and flink extented metadata handlers:
FlinkRelMdColumnInterval,
FlinkRelMdFilteredColumnInterval,
FlinkRelMdColumnNullCount,
FlinkRelMdColumnOriginNullCount,
FlinkRelMdUniqueGroups,
FlinkRelMdModifiedMonotonicity
Attachments
Issue Links
- is a child of
-
FLINK-11488 Add a basic Blink planner framework
- Closed
- links to