Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-11822

Introduce Flink metadata handlers

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              godfreyhe godfrey he
              godfreyhe godfrey he
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m