Details

    Description

      This issue continues the work that was started in FLINK-11449. It distinguishes between function with implementation (UDFs) and function with no implementation.

      The rough design looks as follows:

      1. `interface FunctionDefinition`
         --> general interface for describing a function
         --> goal: separation of runtime and planning/optimization
         --> long-term methods: `getKind()` (aggregate, scalar, table), `getTypeInference()`
      2. `interface UserDefinedFunctionDefinition extends FunctionDefinition`
         --> interface for describing a function with implementation
         --> methods: `createImplementation(): UserDefinedFunction`
         --> default: getTypeInference() = Util.DEFAULT_INFERENCE // future work
      3. `class BuiltInFunctionDefinition implements FunctionDefinition`
         --> class for describing a function where the planner provides an implementation
         --> methods: `getName(): String`
      4. Add `getKind` to `AggregateFunction`, `ScalarFunction`, `TableFunction`
      

      Attachments

        Issue Links

          Activity

            People

              twalthr Timo Walther
              twalthr Timo Walther
              Votes:
              0 Vote for this issue
              Watchers:
              3 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