Attach filesAttach ScreenshotVotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          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

                Slack

                  Issue deployment