Hi All, [*DISCLAIMER]* Please ignore if it's a duplicate request.
I was looking into supported grammars for flink-sql. We do have two dialects* DEFAULT & HIVE. *With this we do have ExtendedParser <https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/parse/ExtendedParser.java> which helps to support some special commands. Currently ExtendedParser <https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/parse/ExtendedParser.java> can only support some predefined strategy <https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/parse/ExtendedParser.java#L37>. I was wondering if we can generalize the ExtendedParser <https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/parse/ExtendedParser.java> using ServiceLoader which can eventually help new grammars with runtime jars. public Optional<Operation> parse(String statement) { for (ExtendedParseStrategy strategy : loadExtendedStrategies()) { if (strategy.match(statement)) { return Optional.of(strategy.convert(statement)); } } return Optional.empty(); } private static List<ExtendedParseStrategy> loadExtendedStrategies() { // load ExtendedParserStrategy class with ServiceLoader List<ExtendedParseStrategy> parseStrategies = new ArrayList<>(); ServiceLoader<ExtendedParseStrategy> extendedParseStrategies = ServiceLoader.load(ExtendedParseStrategy.class); for (ExtendedParseStrategy extendedParseStrategy : extendedParseStrategies) { parseStrategies.add(extendedParseStrategy); } return parseStrategies; } Please share your thoughts. Thanks, Naveen Kumar