[ 
https://issues.apache.org/jira/browse/FLINK-31494?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xzw0223 updated FLINK-31494:
----------------------------
    Description: 
Introduce OperationExecutor for SqlToOperationConverter, following Timo's idea 
in FLINK-31368
class like:

```java

public interface OperationExecutor

{  // The Operation supported by the current OperationExecutor Class<? extends 
Operation> supportedOperation(); // The SqlNode type supported by the current 
OperationExecutor Class<? extends SqlNode> supportedSqlNode(); // 
OperationExecutor is used to convert the validated sqlNode into Operation 
Operation execute(SqlNode validated); }

java ```

 

Add an OperationExecutors to manage all OperationExecutors and be responsible 
for performing conversion sqlNode.

```java

public class OperationExecutors{

private static Map<Class<? extends SqlNode>,OperationExecutor > executors = new 
HashMap<>();

 static

{ addExecutor(SqlCreateCatalog.class,CreateCatalogExecutor.class); // ..... }

private static void addExecutor(sqlnodeClass,operationExecutorsClass)

{ executors.put(sqlnodeClass,operationExecutorsClass.newInstance); }

public  OperationExecutor getExecutor(sqlnodeClass)

{ return executors.get(validated.getClass()); }

public Operation execute(SqlNode validated)

{ return executors.get(validated.getClass()).executor(validated); }

```

 

This can be used in SqlToOperationConverter.java

```java

private static Optional<Operation> convertValidatedSqlNode(
FlinkPlannerImpl flinkPlanner, CatalogManager catalogManager, SqlNode 
validated) {

OperationExecutor<?> executor = OperationExecutors.getExecutor(validated);
if (executor == null)

{ return Optional.empty(); }

Operation operation = executor.execute(validated);
if (operation!=null)

{ return Optional.of(operation); }

}

java```

  was:
Introduce OperationExecutor for SqlToOperationConverter, following Timo's idea 
in FLINK-31368
class like:

```

java

public interface OperationExecutor

{  // The Operation supported by the current OperationExecutor Class<? extends 
Operation> supportedOperation(); // The SqlNode type supported by the current 
OperationExecutor Class<? extends SqlNode> supportedSqlNode(); // 
OperationExecutor is used to convert the validated sqlNode into Operation 
Operation execute(SqlNode validated); }

```

 

Add an OperationExecutors to manage all OperationExecutors and be responsible 
for performing conversion sqlNode.

```java

public class OperationExecutors{

private static Map<Class<? extends SqlNode>,OperationExecutor > executors = new 
HashMap<>();

 static

{ addExecutor(SqlCreateCatalog.class,CreateCatalogExecutor.class); // ..... }

private static void addExecutor(sqlnodeClass,operationExecutorsClass)

{ executors.put(sqlnodeClass,operationExecutorsClass.newInstance); }

public  OperationExecutor getExecutor(sqlnodeClass)

{ return executors.get(validated.getClass()); }

public Operation execute(SqlNode validated)

{ return executors.get(validated.getClass()).executor(validated); }

```

 

This can be used in SqlToOperationConverter.java

```java

private static Optional<Operation> convertValidatedSqlNode(
FlinkPlannerImpl flinkPlanner, CatalogManager catalogManager, SqlNode 
validated) {

OperationExecutor<?> executor = OperationExecutors.getExecutor(validated);
if (executor == null)

{ return Optional.empty(); }

Operation operation = executor.execute(validated);
if (operation!=null)

{ return Optional.of(operation); }

}

java```


> Introduce OperationExecutor for SqlToOperationConverter
> -------------------------------------------------------
>
>                 Key: FLINK-31494
>                 URL: https://issues.apache.org/jira/browse/FLINK-31494
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / Planner
>            Reporter: xzw0223
>            Priority: Major
>
> Introduce OperationExecutor for SqlToOperationConverter, following Timo's 
> idea in FLINK-31368
> class like:
> ```java
> public interface OperationExecutor
> {  // The Operation supported by the current OperationExecutor Class<? 
> extends Operation> supportedOperation(); // The SqlNode type supported by the 
> current OperationExecutor Class<? extends SqlNode> supportedSqlNode(); // 
> OperationExecutor is used to convert the validated sqlNode into Operation 
> Operation execute(SqlNode validated); }
> java ```
>  
> Add an OperationExecutors to manage all OperationExecutors and be responsible 
> for performing conversion sqlNode.
> ```java
> public class OperationExecutors{
> private static Map<Class<? extends SqlNode>,OperationExecutor > executors = 
> new HashMap<>();
>  static
> { addExecutor(SqlCreateCatalog.class,CreateCatalogExecutor.class); // ..... }
> private static void addExecutor(sqlnodeClass,operationExecutorsClass)
> { executors.put(sqlnodeClass,operationExecutorsClass.newInstance); }
> public  OperationExecutor getExecutor(sqlnodeClass)
> { return executors.get(validated.getClass()); }
> public Operation execute(SqlNode validated)
> { return executors.get(validated.getClass()).executor(validated); }
> ```
>  
> This can be used in SqlToOperationConverter.java
> ```java
> private static Optional<Operation> convertValidatedSqlNode(
> FlinkPlannerImpl flinkPlanner, CatalogManager catalogManager, SqlNode 
> validated) {
> OperationExecutor<?> executor = OperationExecutors.getExecutor(validated);
> if (executor == null)
> { return Optional.empty(); }
> Operation operation = executor.execute(validated);
> if (operation!=null)
> { return Optional.of(operation); }
> }
> java```



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

Reply via email to