Jark Wu created FLINK-31450:
-------------------------------

             Summary: Introduce ExecutableOperation for operations to execute
                 Key: FLINK-31450
                 URL: https://issues.apache.org/jira/browse/FLINK-31450
             Project: Flink
          Issue Type: Sub-task
          Components: Table SQL / Planner
            Reporter: Jark Wu
            Assignee: Jark Wu


Colocating the execution logic within the Operation, just like how 
RunnableCommand and V2CommandExec do in Spark. We can introduce a class like:

{code:java}
public interface ExecutableOperation {

    TableResultInternal execute(Context ctx);

    interface Context {
        CatalogManager getCatalogManager();

        FunctionCatalog getFunctionCatalog();

        ResourceManager getResourceManager();

        Configuration getConfiguration();
    }
}
{code}

Many base interfaces can extend it (AlterOperation, CreateOperation, 
DropOperation, etc.). This approach improves code readability (not spread code 
across different classes) and make supporting a new statement by just adding an 
Operation class instead of 3 classes (Operation class, Executor class, and the 
mapping class).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to